origami: A framework for transforming heterogenous data through folds
This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.
This package provides a framework for transforming heterogenous data in a typed manner using folds and provides Template Haskell macros for automatically producing the necessary boilerplate.
Given a set of datatypes, we generate a record declaration called
Fold, parameterized over one type variable for each datatype.
For each constructor Xxx used by any of these types, a field
mkXxx is generated. (A few utility Fold values are
additionally defined.)
For each datatype Yyy, we also generate a foldYyy function
that applies a Fold to its Yyy argument, resulting in a yyy
value. Conceptually, any constructor Xxx in the argument or any
of its sub-components is recursively replaced bottom-up by an
application of mkXxx.
The set of datatypes, the fold family, is specified by giving a list of root datatypes. Datatypes may be designated as atomic: they will not be recursed into.
In general, the framework does not handle parameterized datatypes,
but applications of Traversable, Bitraversable, or
Tritraversable can be handled, if declared by the user. The
n-ary functors are treated as "transparent" and traversed
through.
See the website for more information and examples.
Properties
| Versions | 0.0.1, 0.0.1, 0.0.2, 0.0.3, 0.0.4, 0.0.5, 0.0.6 |
|---|---|
| Change log | None available |
| Dependencies | base (>=4 && <5), bifunctors (>=4.2 && <4.3), containers (>=0.5 && <0.6), lens (>=4.7 && <4.8), mtl (>=2.1 && <2.2), pretty (>=1.1 && <1.2), template-haskell [details] |
| License | BSD-3-Clause |
| Copyright | (c) 2015 Eric Nedervold |
| Author | Eric Nedervold<nedervoldsoftware@gmail.com> |
| Maintainer | Eric Nedervold<nedervoldsoftware@gmail.com> |
| Category | Data |
| Home page | http://github.com/nedervold/origami |
| Bug tracker | http://github.com/nedervold/origami/issues |
| Source repo | head: git clone git://github.com/nedervold/origami.git |
| Uploaded | by nedervold at 2015-02-08T02:53:19Z |
Modules
[Index]
Downloads
- origami-0.0.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees