Skip to content

thesephist/lambda

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

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.