author: Julien Moutinho -- bug-reports: http://bug.autogeree.net/lol build-type: Custom cabal-version: >= 1.24 category: Language -- data-dir: . -- data-files: description: WARNING: this is a research program written as I learn and explore /type inferencing/: please understand well by yourself whatever you may take from it; any question or contribution being welcome :-) . This package implements /type inferencing/ by manipulating /type constraints/ through 3 successive phases: 1. the 'Collect' phase collects them from some expression, 2. the 'Order' phase modifies the order in which they will be solved, 3. the 'Solver' phase solves them according to the logic of some /type inference rules/. . So far, the principles within these phases are mainly a rewrite of Bastiaan Heeren's , using my own code conventions and ideals of simplicity. The most notable change being the use of Roman Cheplyaka's (a little bit augmented): to handle the 'Monad' stack building a 'Solver' (instead of a homegrown machinery I could not understand well). At this point, only a /bottom-up/ 'Collect', a no-op 'Order' and a 'Greedy' 'Solver' are implemented, supporting: /monomorphic types/ ('Monotype'), /parametric polymorphism/ ('Polytype'), /type class polymorphism/ ('Class'), and /type synonyms/ ('Synotype'). The quite understandable thesis of Bastiaan Heeren explains a lot of this in details: . . The is used to demonstrate how to collect /type constraints/ from an expression ('Expr'), and then how to transform this /implicitely typed/ expression into an /explicitely typed/ expression . See also: the compiler. extra-source-files: stack.yaml, uuagc_options, Language/LOL/Typing/Collect/Grammar.ag, Language/LOL/Typing/Expr/Calculus.ag, Language/LOL/Typing/Expr/Grammar.ag extra-tmp-files: -- homepage: http://pad.autogeree.net/informatique/lol/ license: GPL-3 license-file: COPYING maintainer: Julien Moutinho name: lol-typing stability: experimental synopsis: Type inferencer for LOL (λω language) tested-with: GHC==7.10.3 version: 1.20160822 x-revision: 1 source-repository head location: git://git.autogeree.net/lol type: git Flag dev Default: False Description: Turn on development settings. Manual: True Flag dump Default: False Description: Dump some intermediate files. Manual: True Flag exe Default: False Description: Turn on executables. Manual: True Flag prof Default: False Description: Turn on profiling settings. Manual: True Flag threaded Default: True Description: Enable threads. Manual: True Custom-Setup setup-depends: base >= 4.6 && < 5 , Cabal >= 1.24 , uuagc >= 0.9 , uuagc-cabal >= 1.0.6.0 Library default-extensions: NoImplicitPrelude default-language: Haskell2010 ghc-options: -Wall -fno-warn-tabs if flag(dev) cpp-options: -DDEVELOPMENT ghc-options: if flag(dump) ghc-options: -ddump-simpl -ddump-stg -ddump-to-file if flag(prof) cpp-options: -DPROFILING ghc-options: -fprof-auto exposed-modules: Language.LOL.Typing Language.LOL.Typing.Collect Language.LOL.Typing.Collect.Constraint Language.LOL.Typing.Collect.Grammar Language.LOL.Typing.Constraint Language.LOL.Typing.Constraint.Either Language.LOL.Typing.Constraint.Extra Language.LOL.Typing.Constraint.Monotype Language.LOL.Typing.Constraint.Polytype Language.LOL.Typing.Expr Language.LOL.Typing.Expr.Calculus Language.LOL.Typing.Expr.Common Language.LOL.Typing.Expr.Grammar Language.LOL.Typing.Expr.Utils Language.LOL.Typing.Expr.Write Language.LOL.Typing.Lib.Control.Monad.Classes.EffectsFix Language.LOL.Typing.Lib.Control.Monad.Classes.Instance Language.LOL.Typing.Lib.Control.Monad.Classes.StateFix Language.LOL.Typing.Lib.Control.Monad.Classes.StateInstance Language.LOL.Typing.Lib.Data.Default Language.LOL.Typing.Lib.Data.Empty Language.LOL.Typing.Lib.Data.Text.Buildable Language.LOL.Typing.Solver Language.LOL.Typing.Solver.Class Language.LOL.Typing.Solver.Common Language.LOL.Typing.Solver.Constraint Language.LOL.Typing.Solver.Greedy Language.LOL.Typing.Solver.Monad Language.LOL.Typing.Solver.Monotype Language.LOL.Typing.Solver.Polytype Language.LOL.Typing.Type Language.LOL.Typing.Type.Class Language.LOL.Typing.Type.Kind Language.LOL.Typing.Type.Monotype Language.LOL.Typing.Type.Polytype Language.LOL.Typing.Type.Qualification Language.LOL.Typing.Type.Quantification Language.LOL.Typing.Type.Substitution Language.LOL.Typing.Type.Synotype Language.LOL.Typing.Type.Unification build-depends: base >= 4.6 && < 5 , containers >= 0.5 && < 0.6 , ghc-prim , lol-calculus , monad-classes >= 0.3.1.1 -- , monad-control , parsec >= 3.1.2 && < 4 -- , peano -- , reflection , text , text-format , transformers >= 0.4 && < 0.5 -- , transformers-base , uuagc >= 0.9 , uuagc-cabal >= 1.0.6.0 test-suite lol-typing-test type: exitcode-stdio-1.0 default-extensions: NoImplicitPrelude default-language: Haskell2010 ghc-options: -Wall -fno-warn-tabs -main-is Test hs-source-dirs: Language/LOL/Typing main-is: Test.hs other-modules: Expr.Test Solver.Test Type.Test if flag(threaded) ghc-options: -threaded -rtsopts -with-rtsopts=-N if flag(dev) cpp-options: -DDEVELOPMENT ghc-options: if flag(prof) cpp-options: -DPROFILING ghc-options: -fprof-auto build-depends: base >= 4.6 && < 5 , containers >= 0.5 && < 0.6 , directory , filepath , ghc-prim , lol-calculus , lol-typing , monad-classes >= 0.3.1.1 , tasty >= 0.11 , tasty-hunit , text , text-format , transformers >= 0.4 && < 0.5