The hermit package

[ Tags: bsd3, formal-methods, language, library, optimization, program, refactoring, reflection, transformation ] [ Propose Tags ]

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 a pre-alpha `please give feedback' release. Shortcomings/gotchas include:

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.1.6.0 on Reverse.hs]
% ghc Reverse.hs -fforce-recomp -O2 -dcore-lint -fsimple-list-literals -fplugin=HERMIT -fplugin-opt=HERMIT:main:Main: -fplugin-opt=HERMIT:main:Main:resume
[1 of 2] Compiling HList            ( HList.hs, HList.o )
Loading package ghc-prim ... linking ... done.
...
Loading package hermit-0.1.6.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.1.6.0 on Reverse.hs]
% ghc Reverse.hs -fforce-recomp -O2 -dcore-lint -fsimple-list-literals -fplugin=HERMIT -fplugin-opt=HERMIT:main:Main:
[1 of 2] Compiling HList            ( HList.hs, HList.o )
Loading package ghc-prim ... linking ... done.
...
Loading package hermit-0.1.6.0 ... linking ... done.
[2 of 2] Compiling Main             ( Reverse.hs, Reverse.o )
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 compile, use resume.

...
hermit<0> resume
hermit<0> Linking Reverse ...
$

Properties

Versions 0.0, 0.1.1.0, 0.1.1.1, 0.1.2.0, 0.1.4.0, 0.1.6.0, 0.1.8.0, 0.2.0.0, 0.3.0.0, 0.3.1.0, 0.3.2.0, 0.4.0.0, 0.5.0.0, 0.6.0.0, 0.7.0.0, 0.7.1.0, 1.0.0.0, 1.0.1
Dependencies aeson (>=0.6.0.2), ansi-terminal (>=0.5.5), base (==4.*), containers (>=0.5.0.0), data-default (>=0.5.0), directory (>=1.2.0.0), ghc (==7.6.*), haskeline (>=0.7.0.3), kure (>=2.6.14 && <3.0), marked-pretty (>=0.1), mtl (>=2.1.2), process, stm (>=2.4), template-haskell (>=2.8.0.0), text (>=0.11.2.3) [details]
License BSD3
Author Andrew Farmer, Andy Gill, Ed Komp, Neil Sculthorpe
Maintainer Andy Gill <andygill@ku.edu>
Category Language, Formal Methods, Optimization, Transformation, Refactoring, Reflection
Uploaded Fri Jan 11 18:58:52 UTC 2013 by AndrewFarmer
Updated Sat Sep 19 23:02:53 UTC 2015 by AndrewFarmer to revision 1   [What is this?]
Distributions NixOS:1.0.1
Executables hermit
Downloads 4389 total (700 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2016-12-01 [all 7 reports]
Hackage Matrix CI

Modules

  • HERMIT
  • Language
    • HERMIT
      • Language.HERMIT.Context
      • Language.HERMIT.Core
      • Language.HERMIT.Dictionary
      • Language.HERMIT.Expr
      • Language.HERMIT.External
      • Language.HERMIT.Interp
      • Language.HERMIT.Kernel
        • Language.HERMIT.Kernel.Scoped
      • Language.HERMIT.Kure
      • Language.HERMIT.Monad
      • Language.HERMIT.Plugin
      • Language.HERMIT.PrettyPrinter
        • Language.HERMIT.PrettyPrinter.AST
        • Language.HERMIT.PrettyPrinter.Clean
        • Language.HERMIT.PrettyPrinter.GHC
        • Language.HERMIT.PrettyPrinter.JSON
      • Primitive
        • Language.HERMIT.Primitive.AlphaConversion
        • Language.HERMIT.Primitive.Debug
        • Language.HERMIT.Primitive.FixPoint
        • Language.HERMIT.Primitive.Fold
        • Language.HERMIT.Primitive.GHC
        • Language.HERMIT.Primitive.Inline
        • Language.HERMIT.Primitive.Kure
        • Language.HERMIT.Primitive.Local
          • Language.HERMIT.Primitive.Local.Case
          • Language.HERMIT.Primitive.Local.Let
        • Language.HERMIT.Primitive.Navigation
        • Language.HERMIT.Primitive.New
        • Language.HERMIT.Primitive.Unfold
      • Shell
        • Language.HERMIT.Shell.Command

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees