name: bound category: Language, Compilers/Interpreters version: 2.0.6 x-revision: 1 license: BSD3 cabal-version: >= 1.10 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: Simple 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: .gitignore .vim.custom doc/*.hs doc/bound-laws.cabal doc/LICENSE README.markdown CHANGELOG.markdown AUTHORS.markdown 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 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 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.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, hashable >= 1.2.5.0 && < 1.5, mmorph >= 1.0 && < 1.3, deepseq >= 1.4.2 && < 1.5, profunctors >= 3.3 && < 6, th-abstraction >= 0.4 && < 0.6, transformers >= 0.5 && < 0.7, transformers-compat >= 0.5 && < 1 ghc-options: -Wall -O2 -fspec-constr -fdicts-cheap -funbox-strict-fields default-language: Haskell2010 if flag(template-haskell) && impl(ghc) build-depends: template-haskell >= 2.11.1 && < 3.0 test-suite Simple type: exitcode-stdio-1.0 main-is: Simple.hs hs-source-dirs: examples buildable: True ghc-options: -Wall -threaded default-language: Haskell2010 build-depends: base >= 4.5 && < 5, bound, deriving-compat >= 0.3.4 && < 0.7, transformers, transformers-compat test-suite Overkill type: exitcode-stdio-1.0 main-is: Overkill.hs hs-source-dirs: examples ghc-options: -Wall -threaded default-language: Haskell2010 build-depends: base >= 4.5 && < 5, bound, transformers, transformers-compat, vector >= 0.12 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 default-language: Haskell2010 build-depends: base >= 4.5 && < 5, bound, transformers, transformers-compat test-suite Imperative type: exitcode-stdio-1.0 main-is: Imperative.hs hs-source-dirs: examples ghc-options: -Wall -threaded default-language: Haskell2010 build-depends: base >= 4.5 && < 5, bound, transformers, transformers-compat, void