tweak lambda evaluator
authorJim Pryor <profjim@jimpryor.net>
Thu, 23 Sep 2010 06:35:07 +0000 (02:35 -0400)
committerJim Pryor <profjim@jimpryor.net>
Thu, 23 Sep 2010 06:35:07 +0000 (02:35 -0400)
Signed-off-by: Jim Pryor <profjim@jimpryor.net>
lambda-let.html [deleted file]
lambda_evaluator.mdwn

diff --git a/lambda-let.html b/lambda-let.html
deleted file mode 100644 (file)
index c5e1a64..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<html>
-<head>
-<title>Lambda evaluator with lets</title>
-<script language=JavaScript src="code/lambda.js"></script>
-</head>
-<body>
-
-
-Try clicking on the "Reduce" button: <center><form> 
-<textarea cols="80" rows="20" name=input>
-let true = (\x (\y x)) in
-let false = (\x (\y y)) in
-let and = (\l (\r ((l r) false))) in
-
-(
-
-((((and false) false) yes) no)
-
-((((and false) true) yes) no)
-
-((((and true) false) yes) no)
-
-((((and true) true) yes) no)
-
-)
-
-</textarea>
-<br>
-<input type=button value="Reduce" onClick="mytry(this.form)"> 
-<br>
-<textarea cols="80" rows="10" name=result></textarea>
-</form> </center> 
-
-<p>
-Notes: you have to fully specify parentheses and separate your lambdas. So for example, you can't write `(\x y. y)`; you have to write `(\x (\y y))`.
-<p>
-The parser treats symbols that haven't yet been bound (as `yes` and `no` in the example above) as free variables.
-<p>
-If you try to evaluate a non-terminating form, like `((\x (x x)) (\x (x x)))`, you'll probably have to force-quit your browser and start over. Anything you had earlier typed in the upper box will probably be lost.
-
-</body>
-</html>
index 5734f8a..1ca957b 100644 (file)
@@ -1,8 +1,7 @@
 Lambda Evaluator
 ----------------
 
-There is now a [lambda evaluator](http://lambda.jimpryor.net/lambda-let.html) available.
-It will allow you to write lambda terms and evaluate (that is, normalize) them, and inspect the results.
+This lambda evaluator will allow you to write lambda terms and evaluate (that is, normalize) them, and inspect the results.
 (This won't work in Racket, because Racket doesn't even try to represent the internal structure of a function in a human-readable way.)  
 
 *Lambda terms*: lambda terms are written with a backslash, thus: `((\x (\y x)) z)`.  
@@ -23,7 +22,7 @@ Blank lines are fine.
 
 *Abbreviations*: In an earlier version, you couldn't use abbreviations. `\x y. y x x` had to be written `(\x (\y ((y x) x)))`. We've upgraded the parser though, so now it should be able to understand any lambda term that you can.
 
-*Constants*: `true` and `false` are pre-defined to their standard values. So too are the combinators `S`, `K`, `I`, `C`, `B`, `W`, and `T`. Finally, integers will automatically be converted to Church numerals. (`0` is `\s z. z`, `1` is `\s z. s z`, and so on.)
+*Constants*:  (NOT YET IMPLEMENTED!) The combinators `S`, `K`, `I`, `C`, `B`, `W`, and `T` 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.)
 
 
 
@@ -106,7 +105,7 @@ Object.prototype.error = function (message, t) {
 Under the hood
 ---------------
 
-The interpreter is written in JavaScript (which is not closely related to Java), and runs inside your browser.
+The interpreter is written in JavaScript and runs inside your browser.
 So if you decide to reduce a term that does not terminate (such as `((\x (x x)) (\x (x x)))`), it will be your 
 browser that stops responding, not the wiki server.