The practical lambda calculator offers time-saving commands and shortcuts for Lambda calculus computations.
The interface involves entering commands and terms into a read-eval-print-loop (REPL) or reading them from a file using a special command. A Haskell branch is an embedding of the lambda calculator as a domain-specific language into Haskell, so it can be used interactively within Hugs or GHCi.
The calculator implements an efficient and elegant algorithm of normal-order reductions, which is more functional than the traditionally used approach. It takes a more "functional" approach to the hygiene of beta-substitutions by coloring identifiers only where necessary, avoiding the need for a global counter or the threading of the paint bucket through the whole process.
The integration of the calculator with Haskell allows storing terms in variables and combining them intuitively. The software proposes an efficient and elegant technique that can be implemented through intuitive re-writing rules, eliminating the need for an iterative algorithm. It possesses a stack and works by doing shift and reduce steps, with the only difference from yacc being that the lambda-calculator "reparses" the result after a successful reduction.
The calculator shows how lambda-calculus becomes a domain-specific language embedded into Haskell, with examples showcasing convenient ways of storing terms in Haskell variables and pre-evaluating them. Functional programming techniques can be applied to algebraic problems with ease. The software implements Dr. Fairbairn's suggestion to limit the depth of printed terms, making it possible to print some divergent terms.
Overall, the lambda-calculator is an exceptional software tool that provides an efficient, elegant, and practical way of working with untyped lambda-calculus, further highlighting how well lambda-calculus and Haskell play together.
Version 2.2: N/A