packages feed

hermit-0.2.0.0: hermit.cabal

Name:                hermit
Version:             0.2.0.0
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 a pre-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.
  .
    * The fold rewrite can only fold syntactically alpha-equivalent (up to
      parameters of the function you are folding) expressions.
  .
    * RULES have issues with forall types.
  .
    * Different core comes out depending on whether you ascribe explicit
      type signatures.
  .
    * A number of rewrites don't enforce preconditions. ex: 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.2.0.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.2.0.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.2.0.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.2.0.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 <andygill@ku.edu>
Stability:           pre-alpha
build-type:          Simple
Cabal-Version:       >= 1.14

extra-source-files:
    examples/WWSplitTactic.hss
    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.7.1,
                 marked-pretty >= 0.1,
                 mtl >= 2.1.2,
                 operational >= 0.2.2.1,
                 stm >= 2.4,
                 template-haskell >= 2.8.0.0,
                 transformers

  default-language: Haskell2010

  Exposed-modules:
       HERMIT
       HERMIT.Driver

       Language.HERMIT.Context
       Language.HERMIT.Core
       Language.HERMIT.Dictionary
       Language.HERMIT.External
       Language.HERMIT.GHC
       Language.HERMIT.Interp
       Language.HERMIT.Kernel
       Language.HERMIT.Kernel.Scoped
       Language.HERMIT.Kure
       Language.HERMIT.Kure.SumTypes
       Language.HERMIT.Monad
       Language.HERMIT.Optimize
       Language.HERMIT.Parser
       Language.HERMIT.ParserCore

       Language.HERMIT.Plugin

       Language.HERMIT.Primitive.AlphaConversion
       Language.HERMIT.Primitive.Common
       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.Let
       Language.HERMIT.Primitive.Local.Case
       Language.HERMIT.Primitive.Local.Cast
       Language.HERMIT.Primitive.Navigation
       Language.HERMIT.Primitive.Navigation.Crumbs
       Language.HERMIT.Primitive.New
       Language.HERMIT.Primitive.Unfold

       Language.HERMIT.PrettyPrinter.AST
       Language.HERMIT.PrettyPrinter.Clean
       Language.HERMIT.PrettyPrinter.Common
       Language.HERMIT.PrettyPrinter.GHC

       Language.HERMIT.Shell.Command

  Other-modules:
       Language.HERMIT.Syntax

       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