The hermit package

[Tags: bsd3, library, program]

HERMIT is a Haskell-specific toolkit designed to mechanize equational reasoning and program transformation during compilation in GHC.

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.7.1.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.7.1.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.7.1.0 on Reverse.hs]
% ghc Reverse.hs -fforce-recomp -O2 -dcore-lint -fexpose-all-unfoldings -fsimple-list-literals -fplugin=HERMIT -fplugin-opt=HERMIT:*:
[1 of 2] Compiling HList            ( HList.hs, HList.o )
Loading package ghc-prim ... linking ... done.
...
Loading package hermit-0.7.1.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 "binding-of '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 ...
$

Properties

Versions0.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
Dependenciesansi-terminal (>=0.5.5), array, base (==4.*), containers (>=0.5.0.0), data-default-class (>=0.0.1), directory (>=1.2.0.0), ghc (>=7.8), haskeline (>=0.7.0.3), hermit, kure (>=2.16.8), marked-pretty (>=0.1), mtl (>=2.1.2), operational (>=0.2.2.1), process (>=1.1.0.2), stm (>=2.4), temporary (>=1.2.0.3), terminfo (>=0.3.2.5), transformers (>=0.2), transformers-compat (>=0.4), Win32
LicenseBSD3
AuthorAndrew Farmer, Andy Gill, Ed Komp, Neil Sculthorpe
MaintainerAndrew Farmer <afarmer@ittc.ku.edu>
Stabilitybeta
CategoryLanguage, Formal Methods, Optimization, Transformation, Refactoring, Reflection
Source repositoryhead: git clone git://github.com/ku-fpg/hermit.git
Executableshermit
UploadedThu Mar 19 01:31:20 UTC 2015 by AndrewFarmer
DistributionsNixOS:0.7.1.0
Downloads1826 total (148 in last 30 days)
StatusDocs available [build log]
Last success reported on 2015-03-19 [all 1 reports]

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees