[Haskell] ANNOUNCE: Lambda Shell 0.1

Robert Dockins robdockins at fastmail.fm
Tue Dec 20 22:45:45 EST 2005

Fellow Haskellers,

I am pleased to announce the first alpha release of Lambda Shell, a shell 
environment for evaluating terms of the pure, untyped lambda calculus.

  The Lambda Shell

== What is it?

It is a feature-rich shell environment and command-line tool for
evaluating terms of the pure, untyped lambda calculus.  The Lambda
Shell builds on the shell creation framework Shellac, and showcases
most of Shellac's features.

  -- evaluate lambda terms directly from the shell prompt using
     normal or applicative order.  In normal order, one can evaluate
     to normal form, head normal form, or weak head normal form.
  -- define aliases for lambda terms using a top level, non-recursive
     'let' construct.
  -- Show traces of term evaluation, or dump the trace to a file
  -- Count the number of reductions when evaluating terms
  -- test two lambda terms for confluence (that is; if two
     terms, when evaluated to normal form, are alpha equivalent)
  -- programs can be entered from the command line (using the -e option)
     or piped into stdin (using the -s option)

An example session:

$ labmdaShell

The Lambda Shell, version 0.1
Copyright 2005, Robert Dockins

The Lambda Shell comes with ABSOLUTELY NO WARRANTY; for details
type ':nowarranty'.  This is free software, and you are welcome to
redistribute it under certain conditions; type ':gpl'
for details

> (\x y. x) (\a. a) (\b. b)
\a. a

> :load prelude.lam

> :show four
four = succ three

> four
\f. \x. f (f (f (f x)))

> mul two three
\f. \x. f (f (f (f (f (f x)))))

> let x = plus six two

> x == eight

> x == nine
not equal

> :hnf
using reduction strategy: head normal form

> :showCount
show count on

> let l = insertSort (cons two (cons three (cons one nil)))

> index zero l
463 reductions

> index one l
2135 reductions

> index two l
5720 reductions

> :quit



== Why do I care?

Because you are a lambda calculus nut, and you just can't get enough.
Or, the lambda shell could be a worthwhile teaching tool.  The command
line features (especially confluence testing) could lend themselves to
automatic grading.  Also, the lambda shell is a good example of
how to write a shell using Shellac.

== How is it licensed?

The Lambda Shell is licensed under the GNU GPL version 2.  See
the LICENSE file for details.

== How can I get it?

darcs get http://www.eecs.tufts.edu/~rdocki01/lambda/

All feedback, suggestions, patches and bug reports are welcome,
Robert Dockins

More information about the Haskell mailing list