Skip to content
Andy Gill edited this page May 28, 2015 · 1 revision

Shell Types

  • Shell :: * -> * -- a top-level effect
  • Transform :: * -> * -> * -- a transformation
  • Rewrite :: * -> * -- a transformation from something to something of the same type
  • Name :: * -- name of a binder

Examples

  • display :: Shell ()
  • try :: Rewrite a -> Rewrite a
  • idR :: Rewrite a
  • rewrite :: Rewrite ? -> Shell ()
  • query :: Transformation ? b -> Shell b

Running things

Some functions directly use Shell:

HERMIT> display

Others need promotion functions:

HERMIT> rewrite (try idR)

Others need

HERMIT> query (...)

And other