The bound package

[Tags: bsd3, library]

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. To that end we provide haskell 98 combinators for manipulating locally-nameless generalized de Bruijn terms, build over user-supplied term types. A generalized de Bruijn term is one where you can succ whole trees instead of just individual variables.

The approach was first elaborated in Bird and Patterson, "de Bruijn notation as a nested data type":

http://www.cs.uwyo.edu/~jlc/courses/5000_fall_08/debruijn_as_nested_datatype.pdf

However, the combinators they used required higher rank types. Here we use a monad transformer to encapsulate the novel recursion pattern in their generalized de Bruijn representation. It is named Scope to match up with the terminology from Conor McBride and James McKinna's "I am not a number: I am a free variable", while providing stronger type safety guarantees.

http://www.cs.st-andrews.ac.uk/~james/RESEARCH/notanum.pdf

There are three worked examples in the examples folder:


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, 1.0.3
Dependenciesbase (==4.*), bifunctors (>=0.1.3 && <0.2), prelude-extras (==0.2.*), transformers (>=0.2 && <0.4)
LicenseBSD3
CopyrightCopyright (C) 2012 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 Jun 16 08:18:05 UTC 2012
Uploaded byEdwardKmett
DistributionsNixOS:1.0.3
Downloads3213 total (248 in last 30 days)

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees