# The shapely-data package

`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`workEdward Kmett's

`categories`packageChris 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`and`coerce`, 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]

## Properties

Versions | 0.0, 0.1 |
---|---|

Dependencies | base (<5), proxy-kindness (==0.1), tagged, template-haskell (==2.*) [details] |

License | BSD3 |

Author | Brandon Simmons |

Maintainer | brandon.m.simmons@gmail.com |

Stability | Unknown |

Category | Data, Generics |

Home page | http://github.com/jberryman/shapely-data |

Source repository | head: git clone https://github.com/jberryman/shapely-data.git -b master |

Uploaded | Sun Dec 22 23:32:01 UTC 2013 by BrandonSimmons |

Distributions | NixOS:0.1 |

Downloads | 457 total (5 in the last 30 days) |

Votes | |

Status | Docs available [build log] Successful builds reported [all 1 reports] |

## Downloads

- shapely-data-0.1.tar.gz [browse] (Cabal source package)
- Package description (included in the package)