week9 tweaks
[lambda.git] / lambda_evaluator.mdwn
index c9e2164..d39086f 100644 (file)
@@ -21,6 +21,7 @@ Blank lines are fine.
 
 *Constants*: The combinators `S`, `K`, `I`, `C`, `B`, `W`, `T`, `M` (aka <code>&omega;</code>) and `L` are pre-defined to their standard values. Also, integers will automatically be converted to Church numerals. (`0` is `\s z. z`, `1` is `\s z. s z`, and so on.)
 
+*Variables*: Variables must start with a letter and can continue with any sequence of letters, numbers, `_`, `-`, or `/`. They may optionally end with `?` or `!`. When the evaluator does alpha-conversion, it may change `x` into `x'` or `x''` and so on. But you should not attempt to use primed variable names yourself.
 
 
 <textarea id="INPUT" style="border: 2px solid black; color: black; font-family: monospace; height: 3in; overflow: auto; padding: 0.5em; width: 100%;">
@@ -119,6 +120,25 @@ The code is based on:
 *      [Oleg Kiselyov's Haskell lambda calculator](http://okmij.org/ftp/Computation/lambda-calc.html#lambda-calculator-haskell).
 *      The top-down JavaScript lexer and parser at <http://javascript.crockford.com/tdop/index.html>.
 
-Improvements we hope to add soon: the ability to reduce Combinatory Logic combinators and report the result as combinators, rather than in lambda forms.
+Improvements we hope to add:
 
+*      detecting some common cases of non-normalizing terms (the problem of determining in general whether a term will normalize is undecidable)
+*      returning results in combinator form (the evaluator already accepts combinators as input)
+*      displaying reductions one step at a time
+*      specifying the reduction order and depth
+*      allow other binders such as &forall; and &exist; (though these won't be interpreted as doing anything other than binding variables)
+
+<a name="other_evaluators"></a>
+Other Lambda Evaluators/Calculutors
+-----------------------------------
+
+*      [Peter Sestoft's Lambda Calculus Reducer](http://www.itu.dk/people/sestoft/lamreduce/index.html): Very nice! Allows you to select different evaluation strategies, and shows stepwise reductions.
+*      [Chris Barker's Lambda Tutorial](http://homepages.nyu.edu/~cb125/Lambda)
+*      [Penn Lambda Calculator](http://www.ling.upenn.edu/lambda/): Pedagogical software developed by Lucas Champollion, Josh Tauberer and Maribel Romero.  Linguistically oriented. Requires installing Java (Mac users will probably already have it installed).
+*      [Mike Thyer's Lambda Animator](http://thyer.name/lambda-animator/): Graphical tool for experimenting with different reduction strategies. Also requires installing Java, and Graphviz.
+*      [Matt Might's Lambda Evaluator](http://matt.might.net/articles/implementing-a-programming-language/) in Scheme (R5RS and Racket).
+
+See also:
+
+*      [Jason Jorendorff's Try Scheme](http://tryscheme.sourceforge.net/about.html): Runs a miniature Scheme interpreter in Javascript, in your browser.