Up: Index. Previous: Language. Next: Command line.

Menus

File
The Import... and Export... items allow you to open and save all the symbols currently defined into a file. (A separate page describes the file format used.) The Quit item allows you to exit the program.

Edit
When you have selected text in one of the text areas, you can cut, copy, and paste using the clipboard.

Options
Allows you to customize the engine's operation, the way in which expressions are displayed, and the interface. These choices are described in detail below.

Help
You can display this help system and get the version number from the Help menu.

Engine options

Maximum Reductions
Some lambda expressions can never be completely simplified, such as the following.
(λx.x x x) (λx.x x x)
To avoid eating up too many resources, the engine limits how many steps it will perform before giving up. You can customize how many steps this will take.

If you define a symbol to represent the result of an expression whose simplification process required more steps than given, Lambda Calculator will define the symbol as the smallest lambda expression it found during the process.

Evaluation Order
The intuitive way of applying an argument to a function is to evaluate the argument before sending it into the function. This is called the applicative order of evaluation (also called eager or call-by-value evaluation). The following illustrates how this works on one expression.
(λx.* x x) (- 3 1)
= (λx.* x x) 2 = * 2 2
= 4

By default, however, Lambda Calculator uses normal order (also called lazy or call-by-name evaluation). In this system, an argument is passed into a function without evaluation.

(λx.* x x) (- 3 1)
= * (- 3 1) (- 3 1)
= * 2 2
= 4

Here, we do not compute - 3 1 until after it is passed into the function. We only compute its value once it becomes needed - which is why some people call it lazy evaluation.

Notice, however, that when the argument is finally evaluated, it changes everywhere. Such an unevaluated argument is called a thunk, and simplification applied to it applies everywhere. If you select the "Normal Without Thunks" option, the program will not perform this optimization. This will mean that arguments may be evaluated multiple times, leading to more reductions.

(λx.* x x) (- 3 1)
= * (- 3 1) (- 3 1)
= * 2 (- 3 1)
= * 2 2
= 4

Use Applied Calculus
If selected (as it is by default), then Lambda Calculator will include some built-in functions as described on the Language page. This is convenient, but such built-in functions represent a sullying of the pure lambda calculus.

If you unselect this option, Lambda Calculus uses the pure lambda calculus.

Enable Eta Reductions
If selected (the default), Lambda Calculator's engine will enable eta reductions, in which expressions of the form λx.f x reduce to simply f.

Printing options

Maximum Length
The program can bound the number of characters displayed in an lambda expression; by default, it bounds the length at 100 characters. A bounded length makes the program run faster, because long expressions take a long time to convert into strings, and because long lines slow the text area in which the program prints.

Print Lambda Characters
If selected (the default), Lambda Calculator will display lambda characters, if the current font supports it. Otherwise, the program will use a backslash to represent a lambda character.

Show Intermediate Steps
If selected (the default), Lambda Calculator will display each step of the reduction as it is performed. Displaying these intermediate steps slows the computation process significantly, however, and you can turn it off by unselecting this option. In this case, only the initial lambda expression and its final value are displayed.

Substitute Symbols
If selected (the default), the program will attempt to represent any subexpressions of a printed expression that match with a defined symbol's value with the symbol instead. This can lead to lambda expressions that are easier to read.

Vary Parentheses
With this option selected (not the default), the program will intersperse brackets and braces sometimes in place of parentheses. (The specific system it uses is two parentheses, then a bracket, then two parentheses, then a brace.) For large expressions, this can help in determining which parentheses match.

Interface options

Font Size
This sets the size of the characters displayed in the input and output fields.

Show Browser
If selected (the default), the program displays a list of all currently defined symbols at the left side of the window. Selecting an item from this list displays the value associated with the symbol.

Up: Index. Previous: Language. Next: Command line.