Skip to content

An untyped lambda calculus interpreter

License

Notifications You must be signed in to change notification settings

barrettotte/wyvern

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

wyvern

An untyped lambda calculus interpreter made to learn the basics of lambda calculus and concepts of functional programming.

Background

Lambda(λ) calculus is a formal system developed by Alonzo Church to express mathematical functions and is the foundation of functional programming languages. Lambda calculus (function-based) and Turing machines (state-based) are both universal models of computation, part of the Church-Turing Thesis.

Grammar at a glance:

  • Identifier: x - Identifier as expected in a programming language
  • Grouping: (x) - Grouping terms to avoid ambiguity
  • Abstraction: λx.y - Define function or lambda (anonymous function)
  • Application: x y - Invoke a lambda

See grammar.ebnf for EBNF grammar of this untyped lambda calculus.

Commands

  • Run - cargo run
  • Build release - cargo build --release

References