shapely-data: Generics using @(,)@ and @Either@, with algebraic operations and typed conversions
shapely-data
is a library for working with algebraic datatypes in a
simple generic form made up of haskell's primitive product, sum and unit
types: (,)
, Either
, and ()
, providing something like light-weight
Structural Typing.
The library was not designed to facilitate generic traversals or abstraction over different recursion schemes, but rather to (from most to least important)
Provide a good story for
(,)
Either
as a lingua franca/ generic representation that other library writers can use without dependencies, encouraging abstractions in terms of products and sumsSupport algebraic operations on ADTs, making types composable
Support powerful, typed conversions between
Shapely
types
Influences
I've taken lots of inspiration, code, names, ideas, and type-level programming techniques from, in particular
Oleg Kiselyov's HList work
Edward Kmett's "categories" package
Chris Taylor's "Algebra of Algebraic Datatypes" series at http://chris-taylor.github.io/blog/2013/02/10/the-algebra-of-algebraic-data-types/
Issues and Limitations:
massage
does not support mutually-recursive types and other more complicated recursion schemes, nor type application.While all classes except
Shapely
are considered closed, we don't do any tricks to enforce that in the API yet.In fancier functions that use type equality (e.g.
coerce
), types need to be unambiguous so type signatures are sometimes required.type errors, especially in
massage
andcoerce
, can be crypticTH deriving hasn't been considered for fancier types like GADTs, existential types, etc. some of which may have sensible Shapely instances
Performance hasn't been tested at all yet.
[Skip to Readme]
Downloads
- shapely-data-0.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
- No Candidates
Versions [RSS] | 0.0, 0.1 |
---|---|
Dependencies | base (<5), proxy-kindness (==0.1), tagged, template-haskell (>=2 && <3) [details] |
Tested with | ghc ==7.6.3 |
License | BSD-3-Clause |
Author | Brandon Simmons |
Maintainer | brandon.m.simmons@gmail.com |
Category | Data, Generics |
Home page | http://github.com/jberryman/shapely-data |
Source repo | head: git clone https://github.com/jberryman/shapely-data.git -b master |
Uploaded | by BrandonSimmons at 2013-12-22T23:32:01Z |
Distributions | |
Reverse Dependencies | 1 direct, 0 indirect [details] |
Downloads | 1824 total (8 in the last 30 days) |
Rating | (no votes yet) [estimated by Bayesian average] |
Your Rating | |
Status | Docs available [build log] Successful builds reported [all 1 reports] |