name: bound category: Language, Compilers/Interpreters version: 2.0.1 x-revision: 4 license: BSD3 cabal-version: >= 1.9.2 license-file: LICENSE author: Edward A. Kmett maintainer: Edward A. Kmett stability: experimental homepage: http://github.com/ekmett/bound/ bug-reports: http://github.com/ekmett/bound/issues copyright: Copyright (C) 2012-2013 Edward A. Kmett synopsis: Making de Bruijn Succ Less build-type: Custom description: 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: . . 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. extra-source-files: .travis.yml .ghci .gitignore .vim.custom examples/Simple.hs examples/Deriving.hs examples/Overkill.hs tests/doctests.hs travis/cabal-apt-install travis/config README.markdown CHANGELOG.markdown AUTHORS.markdown tested-with: GHC==7.4.2, GHC==7.6.3, GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.1 flag template-haskell description: 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. default: True manual: True custom-setup setup-depends: base >= 4 && <5, Cabal, cabal-doctest >= 1.0.1 && <1.1 source-repository head type: git location: git://github.com/ekmett/bound.git library hs-source-dirs: src exposed-modules: Bound Bound.Class Bound.Name Bound.Scope Bound.Scope.Simple Bound.Term Bound.TH Bound.Var build-depends: base >= 4 && < 5, bifunctors >= 3 && < 6, binary >= 0.5 && < 0.9, bytes >= 0.4 && < 1, cereal >= 0.3.5.2 && < 0.6, comonad >= 3 && < 6, hashable >= 1.2.5.0 && < 1.3, mmorph >= 1.0 && < 1.2, deepseq >= 1.1 && < 1.5, profunctors >= 3.3 && < 6, template-haskell >= 2.7 && < 3, transformers >= 0.2 && < 0.6, transformers-compat >= 0.5 && < 1 ghc-options: -Wall -O2 -fspec-constr -fdicts-cheap -funbox-strict-fields if impl(ghc >=7.4 && < 7.6) build-depends: ghc-prim if flag(template-haskell) && impl(ghc) build-depends: template-haskell >= 2.7 && < 3.0 test-suite Simple type: exitcode-stdio-1.0 main-is: Simple.hs hs-source-dirs: examples buildable: True ghc-options: -Wall -threaded build-depends: base, bound, deriving-compat >=0.3.4 && <0.5, transformers, transformers-compat test-suite Overkill type: exitcode-stdio-1.0 main-is: Overkill.hs hs-source-dirs: examples ghc-options: -Wall -threaded -main-is Overkill build-depends: base, bound, transformers, transformers-compat, functor-classes-compat, vector if !impl(ghc >= 7.8) buildable: False test-suite Deriving type: exitcode-stdio-1.0 main-is: Deriving.hs hs-source-dirs: examples ghc-options: -Wall -threaded -main-is Deriving build-depends: base, bound, transformers, transformers-compat test-suite Imperative type: exitcode-stdio-1.0 main-is: Imperative.hs hs-source-dirs: examples ghc-options: -Wall -threaded -main-is Imperative build-depends: base, bound, transformers, transformers-compat, void test-suite doctests type: exitcode-stdio-1.0 main-is: doctests.hs hs-source-dirs: tests ghc-options: -Wall -threaded build-depends: base, bound, doctest >= 0.11.2 && < 0.16, vector >= 0.9 && < 0.13, void