bound: Making de Bruijn Succ Less
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.
[Skip to Readme]
Modules
[Index] [Quick Jump]
Flags
Manual Flags
Name | Description | Default |
---|---|---|
template-haskell | You can disable the use of the `template-haskell` package using `-f-template-haskell`. Disabling this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users. | Enabled |
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
Downloads
- bound-2.0.5.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.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, 1.0.4, 1.0.5, 1.0.6, 1.0.7, 2, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5, 2.0.6, 2.0.7 |
---|---|
Change log | CHANGELOG.markdown |
Dependencies | base (>=4.9 && <5), bifunctors (>=5 && <6), binary (>=0.8.3 && <0.9), bytes (>=0.15.2 && <1), cereal (>=0.4.1 && <0.6), comonad (>=5 && <6), deepseq (>=1.4.2 && <1.5), hashable (>=1.2.5.0 && <1.5), mmorph (>=1.0 && <1.3), profunctors (>=3.3 && <6), template-haskell (>=2.11.1 && <3.0), th-abstraction (>=0.4 && <0.5), transformers (>=0.5 && <0.7), transformers-compat (>=0.5 && <1) [details] |
Tested with | ghc ==8.0.2, ghc ==8.2.2, ghc ==8.4.4, ghc ==8.6.5, ghc ==8.8.4, ghc ==8.10.7, ghc ==9.0.1, ghc ==9.2.1 |
License | BSD-3-Clause |
Copyright | Copyright (C) 2012-2013 Edward A. Kmett |
Author | Edward A. Kmett |
Maintainer | Edward A. Kmett <ekmett@gmail.com> |
Category | Language, Compilers/Interpreters |
Home page | http://github.com/ekmett/bound/ |
Bug tracker | http://github.com/ekmett/bound/issues |
Source repo | head: git clone git://github.com/ekmett/bound.git |
Uploaded | by ryanglscott at 2022-05-08T00:43:11Z |
Distributions | LTSHaskell:2.0.7, NixOS:2.0.7, Stackage:2.0.7 |
Reverse Dependencies | 9 direct, 0 indirect [details] |
Downloads | 38325 total (43 in the last 30 days) |
Rating | 2.5 (votes: 4) [estimated by Bayesian average] |
Your Rating | |
Status | Docs available [build log] Last success reported on 2022-05-08 [all 1 reports] |