thesephist / lambda

The untyped lambda calculus, implemented in Ink

Home Page:https://dotink.co/posts/lambda/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Lambda calculus in Ink 🖋

This repo implements the untyped lambda calculus with Church numeral encodings and a couple of fixed-point combinators in the Ink programming language.

lambda.ink contains the entire implementation and is thoroughly commented with explanations.

Screenshot

Try it out

The bottom of the lambda.ink file is a short test program that uses the functions and values defined in the file to run a few small test programs, including an implementation of a factorial function working on Church numerals.

The test harness also includes two functions, toNumber and toBool, that convert the lambda calculus representations of numbers and booleans to their native Ink values.

For example, the Church numeral encoding of the number 3 is Three, defined as f => x => f(f(f(x))). To convert a Church numeral to an Ink number value, use toNumber.

Three := f => x => f(f(f(x)))

toNumber(Three) `` => 3

To run the program, run ink lambda.ink.

About

The untyped lambda calculus, implemented in Ink

https://dotink.co/posts/lambda/

License:MIT License