ANNOUNCE: Lambda Shell 0.1
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. 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 equal
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 one 463 reductions
index one l two 2135 reductions
index two l three 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
robdockins:
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.
I've written a lambdabot plugin for lambda shell, it's running in #haskell right now. 15:43 Cale:: @where lambdashell 15:43 lambdabot:: darcs get http://www.eecs.tufts.edu/~rdocki01/lambda/ 15:43 Cale:: @lam fac four 15:43 lambdabot:: \f. \x. f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f ( f (f x))))))))))))))))))))))) 15:43 Cale:: @lam fac S 15:43 lambdabot:: \f. \g. \x. x (g x) 15:49 Cale:: @lam fst (pair three four) 15:49 lambdabot:: three 15:49 Cale:: @lam snd (pair three four) 15:49 lambdabot:: four Cheers, Don
participants (2)
-
dons@cse.unsw.edu.au -
Robert Dockins