The bound package

[Tags: bsd3, library]

We represent the target language itself as an ideal monad supplied by the user, and provide a Scope monad transformer for introducing bound variables in user supplied terms. Users supply a Monad and Traversable instance, and we traverse to find free variables, and use the Monad to perform substitution that avoids bound variables.

Slides describing and motivating this approach to name binding are available online at:

http://www.slideshare.net/ekmett/bound-making-de-bruijn-succ-less

The goal of this package is to make it as easy as possible to deal with name binding without forcing an awkward monadic style on the user.

With generalized de Bruijn term you can lift whole trees instead of just applying succ to individual variables, weakening the all variables bound by a scope and greatly speeding up instantiation. By giving binders more structure we permit easy simultaneous substitution and further speed up instantiation.


Properties

Versions0.1, 0.1.1, 0.1.2, 0.1.3, 0.1.4, 0.2, 0.2.1, 0.3.1, 0.3.2, 0.4, 0.5, 0.5.0.1, 0.5.0.2, 0.5.1, 0.6, 0.6.1, 0.7, 0.8, 0.8.1, 0.9, 0.9.0.1, 0.9.1, 0.9.1.1, 1.0, 1.0.1, 1.0.2
Dependenciesbase (==4.*), bifunctors (>=3 && <5), binary (>=0.5 && <0.8), bytes (>=0.4 && <1), cereal (>=0.3.5.2 && <0.5), comonad (>=3 && <5), hashable (>=1.1 && <1.3), hashable-extras (>=0.1 && <1), prelude-extras (>=0.3 && <1), profunctors (>=3.3 && <5), transformers (>=0.2 && <0.4)
LicenseBSD3
CopyrightCopyright (C) 2012-2013 Edward A. Kmett
AuthorEdward A. Kmett
MaintainerEdward A. Kmett <ekmett@gmail.com>
Stabilityexperimental
CategoryLanguage, Compilers/Interpreters
Home pagehttp://github.com/ekmett/bound/
Bug trackerhttp://github.com/ekmett/bound/issues
Source repositoryhead: git clone git://github.com/ekmett/bound.git
Upload dateSat Apr 5 18:09:15 UTC 2014
Uploaded byEdwardKmett
Downloads2148 total (647 in last 30 days)

Modules

Downloads

Maintainers' corner

For package maintainers and hackage trustees