X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=temp.mdwn;h=4a5b9dc0ec39a17f14cf4c564148b40acc9252e5;hp=585e666c8aa84181ee1e5031d242369d2eac17c2;hb=c67cbb8584091ee6f42f6780f9ab4142e45c37b0;hpb=1f9c532ea9cfdb1e553e30f5f83568e4a73c80b9 diff --git a/temp.mdwn b/temp.mdwn index 585e666c..4a5b9dc0 100644 --- a/temp.mdwn +++ b/temp.mdwn @@ -1,3 +1,28 @@ +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)`. + +If you click "Normalize", the system will try to produce a normal-form lambda expression that your original term reduces to (~~>). So `((\x (\y x)) z)` reduces to `(\y z)`. + +*Let*: in order to make building a more elaborate set of terms easier, it is possible to define values using `let`. +In this toy system, `let`s should only be used at the beginning of a file. If we have, for intance, + + let true = (\x (\y x)) in + let false = (\x (\y y)) in + ((true yes) no) + +the result is `yes`. + +*Comments*: anything following a semicolon to the end of the line is ignored. +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*: 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.) + + +