Skip to content

Instantly share code, notes, and snippets.

View mikaelsouza's full-sized avatar
🐟
Working from home

Mikael Souza mikaelsouza

🐟
Working from home
View GitHub Profile
@mikaelsouza
mikaelsouza / lc.ml
Created November 2, 2022 23:19 — forked from EduardoRFS/lc.ml
type term = Var of string | Lam of string * term | App of term * term
type value = Closure of ((string * value) list * string * term)
let rec eval env term =
match term with
| Var var -> List.assoc var env
| Lam (param, body) -> Closure (env, param, body)
| App (lambda, argument) -> (
let lambda = eval env lambda in
let argument = eval env argument in