@calculemus/abt-lambda

Using @calculemus/abt to interpret lambda-calculus

Usage no npm install needed!

<script type="module">
  import calculemusAbtLambda from 'https://cdn.skypack.dev/@calculemus/abt-lambda';
</script>

README

Lambda calculus

npm version Build Status Dependency Status Dev Dependency Status Coverage Status

Demonstration of the @calculemus/abt library.

Based on Peter Sestoft's Demonstrating Lambda Calculus Reduction.

Using the evaluator

You can try the following code over at RunKit:

const abtLambda = require("@calculemus/abt-lambda");

// Parse, evaluate, and print as different steps
const [fv, e] = abtLambda.parse("x (x => (x => x) y x)");
console.log(abtLambda.toString(e));
const [gas, norm] = abtLambda.callByName.normalize(100, fv, e);
console.log(abtLambda.toString(norm));

// Do all of that at once
console.log(abtLambda.evaluate("(x => y => x y) (y => x) z"));