Skip to content

thesephist/lambda

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 

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

Topics

Resources

License

Stars

Watchers

Forks