Name: hermit Version: 0.3.2.0 x-revision: 1 Synopsis: Haskell Equational Reasoning Model-to-Implementation Tunnel Description: HERMIT uses Haskell to express semi-formal models, efficient implementations, and provide a bridging DSL to describe via stepwise refinement the connection between these models and implementations. The key transformation in the bridging DSL is the worker/wrapper transformation. . This is an alpha `please give feedback' release. Shortcomings/gotchas include: . * Command line completion is ad hoc at the moment. . * log command prints linearly, even if command history is a tree. . * RULES have issues with forall types. . * A number of rewrites don't enforce preconditions. eg: cast elimination always works, even if the cast is necessary . Examples can be found in the examples sub-directory. . @ $ cd examples/reverse @ . Example of running a script. . @ $ hermit Reverse.hs Reverse.hss resume [starting HERMIT v0.3.2.0 on Reverse.hs] % ghc Reverse.hs -fforce-recomp -O2 -dcore-lint -fexpose-all-unfoldings -fsimple-list-literals -fplugin=HERMIT -fplugin-opt=HERMIT:Main:Reverse.hss -fplugin-opt=HERMIT:Main:resume [1 of 2] Compiling HList ( HList.hs, HList.o ) Loading package ghc-prim ... linking ... done. ... Loading package hermit-0.3.2.0 ... linking ... done. [2 of 2] Compiling Main ( Reverse.hs, Reverse.o ) Linking Reverse ... $ ./Reverse .... @ . Example of interactive use. . @ $ hermit Reverse.hs [starting HERMIT v0.3.2.0 on Reverse.hs] % ghc Reverse.hs -fforce-recomp -O2 -dcore-lint -fexpose-all-unfoldings -fsimple-list-literals -fplugin=HERMIT -fplugin-opt=HERMIT:Main: [1 of 2] Compiling HList ( HList.hs, HList.o ) Loading package ghc-prim ... linking ... done. ... Loading package hermit-0.3.2.0 ... linking ... done. [2 of 2] Compiling Main ( Reverse.hs, Reverse.o ) ===================== Welcome to HERMIT ===================== HERMIT is a toolkit for the interactive transformation of GHC core language programs. Documentation on HERMIT can be found on the HERMIT web page at: http:\/\/www.ittc.ku.edu\/csdl\/fpg\/software\/hermit.html . You have just loaded the interactive shell. To exit, type \"abort\" or \"resume\" to abort or resume GHC compilation. . Type \"help\" for instructions on how to list or search the available HERMIT commands. . To get started, you could try the following: \ \ - type \"consider 'foo\", where \"foo\" is a function \ \ \ \ defined in the module; \ \ - type \"set-pp-type Show\" to switch on typing information; \ \ - use natural numbers such as \"0\" and \"1\" to descend into \ \ \ \ the definition, and \"up\" to ascend; \ \ - type \"info\" for more information about the current node; \ \ - type \"log\" to display an activity log. ============================================================= module main:Main where \ \ rev ∷ ∀ a . [a] -> [a] \ \ unwrap ∷ ∀ a . ([a] -> [a]) -> [a] -> H a \ \ wrap ∷ ∀ a . ([a] -> H a) -> [a] -> [a] \ \ main ∷ IO () \ \ main ∷ IO () hermit\<0\> ... @ . To resume compilation, use resume. . @ ... hermit\<0\> resume hermit\<0\> Linking Reverse ... $ @ Category: Language, Formal Methods, Optimization, Transformation, Refactoring, Reflection License: BSD3 License-file: LICENSE Author: Andrew Farmer, Andy Gill, Ed Komp, Neil Sculthorpe Maintainer: Andy Gill Stability: alpha build-type: Simple Cabal-Version: >= 1.14 extra-source-files: examples/concatVanishes/ConcatVanishes.hss examples/concatVanishes/Flatten.hs examples/concatVanishes/Flatten.hss examples/concatVanishes/HList.hs examples/concatVanishes/QSort.hs examples/concatVanishes/QSort.hss examples/concatVanishes/Rev.hs examples/concatVanishes/Rev.hss examples/evaluation/Eval.hs examples/evaluation/Eval.hss examples/factorial/Fac.hs examples/factorial/Fac.hss examples/fib-stream/Fib.hs examples/fib-stream/Fib.hss examples/fib-stream/Nat.hs examples/fib-stream/Stream.hs examples/fib-tuple/Fib.hs examples/fib-tuple/Fib.hss examples/flatten/HList.hs examples/flatten/Flatten.hs examples/flatten/Flatten.hss examples/hanoi/Hanoi.hs examples/hanoi/Hanoi.hss examples/last/Last.hs examples/last/Last.hss examples/mean/Mean.hs examples/mean/Mean.hss examples/qsort/HList.hs examples/qsort/QSort.hs examples/qsort/QSort.hss examples/reverse/HList.hs examples/reverse/Reverse.hs examples/reverse/Reverse.hss Library ghc-options: -Wall -fno-warn-orphans Build-Depends: base >= 4 && < 5, ansi-terminal >= 0.5.5, array, containers >= 0.5.0.0, data-default >= 0.5.0, ghc >= 7.6, haskeline >= 0.7.0.3, kure >= 2.14.0 && < 3.0, marked-pretty >= 0.1, mtl >= 2.1.2, operational >= 0.2.2.1, process >= 1.1.0.2, stm >= 2.4, template-haskell >= 2.8.0.0, temporary >= 1.1.2.4, terminfo >= 0.3.2.5, transformers default-language: Haskell2010 Exposed-modules: HERMIT HERMIT.Context HERMIT.Core HERMIT.Dictionary HERMIT.Driver HERMIT.Dictionary.AlphaConversion HERMIT.Dictionary.Common HERMIT.Dictionary.Composite HERMIT.Dictionary.Debug HERMIT.Dictionary.FixPoint HERMIT.Dictionary.Fold HERMIT.Dictionary.Function HERMIT.Dictionary.GHC HERMIT.Dictionary.Inline HERMIT.Dictionary.Kure HERMIT.Dictionary.Local HERMIT.Dictionary.Local.Bind HERMIT.Dictionary.Local.Case HERMIT.Dictionary.Local.Cast HERMIT.Dictionary.Local.Let HERMIT.Dictionary.Navigation HERMIT.Dictionary.Navigation.Crumbs HERMIT.Dictionary.New HERMIT.Dictionary.Query HERMIT.Dictionary.Reasoning HERMIT.Dictionary.Undefined HERMIT.Dictionary.Unfold HERMIT.Dictionary.Unsafe HERMIT.Dictionary.WorkerWrapper.Common HERMIT.Dictionary.WorkerWrapper.Fix HERMIT.Dictionary.WorkerWrapper.FixResult HERMIT.External HERMIT.GHC HERMIT.Interp HERMIT.Kernel HERMIT.Kernel.Scoped HERMIT.Kure HERMIT.Kure.SumTypes HERMIT.Monad HERMIT.Optimize HERMIT.Parser HERMIT.ParserCore HERMIT.Plugin HERMIT.PrettyPrinter.AST HERMIT.PrettyPrinter.Clean HERMIT.PrettyPrinter.Common HERMIT.PrettyPrinter.GHC HERMIT.Shell.Command HERMIT.Shell.Dictionary HERMIT.Shell.Externals HERMIT.Shell.ScriptToRewrite HERMIT.Shell.Renderer HERMIT.Shell.Types Other-modules: HERMIT.Syntax HERMIT.Utilities Paths_hermit Hs-Source-Dirs: src Executable hermit Build-Depends: base >= 4 && < 5, directory >= 1.2.0.0, hermit, process default-language: Haskell2010 Main-Is: Main.hs Hs-Source-Dirs: driver Ghc-Options: source-repository head type: git location: git://github.com/ku-fpg/hermit.git