GitXplorerGitXplorer
J

lambda

public
7 stars
0 forks
0 issues

Commits

List of commits on branch master.
Unverified
743b40ab2cef8e89461f4a01975f95c12ad7a88b

add reveal_type

JJelleZijlstra committed 7 years ago
Unverified
d52c76f8e16d17451b4a36e065972cd2d5e8f963

fix test

JJelleZijlstra committed 7 years ago
Unverified
ba6476e094b2de3c6441cf82e33be7db17e6884c

simply and fix test case

JJelleZijlstra committed 7 years ago
Unverified
0ad1a942dbedb3282838d0ed0924671b939d5d71

blacklist more tests

JJelleZijlstra committed 7 years ago
Unverified
9dfb9ab2351a5ac9b907c11178f2c53bbe263eea

fix expected test output

JJelleZijlstra committed 7 years ago
Unverified
63986f348ec4913ea935d4dc2b798144273216f8

print summary of test results

JJelleZijlstra committed 7 years ago

README

The README file for this repository.

Implementations of several variants of the lambda calculus in OCaml. For each variant, an interpreter and a compiler to JavaScript are provided. Currently, there are four variants:

  • untyped: Almost pure, untyped lambda calculus, with integers, a print statement, and let-in added in order to give the language a semblance of usability. The file untyped/test/ackermann.lam contains implementations of several sorting algorithms in this language.
  • simplytyped: Simply typed lambda calculus, with a fix operator added in order to enable recursion. I also added if statements and boolean variables.
  • typeinference: Like the previous implementation, but without the need to make every type explicit. The implementation uses constraint-based typing and the Hindley-Milner algorithm. This variant also supports pairs, the unit type, sum types, algebraic data types, pattern matching, records, let-polymorphism, and higher-order types.
  • subtyping: A fork of the typeinference variant with rudimentary support for subtyping on records. I wrote these programs primarily to learn, not to provide a useful programming language.