Randy Farmer (he/him) <randy@spritely.institute>
Christine Lemmer-Webber (she/her) <christine@spritely.institute>
Hackers 2023
(define (evaluate expr env)
(match expr
;; Support builtin types
((or #t #f (? number?))
expr)
;; Quoting
(('quote quoted-expr)
quoted-expr)
;; Variable lookup
((? symbol? name)
(env-lookup env name))
;; Conditionals
(('if test consequent alternate)
(if (evaluate test env)
(evaluate consequent env)
(evaluate alternate env)))
;; Lambdas (Procedures)
(('lambda (args ...) body)
(lambda (. vals)
(evaluate body (extend-env env args vals))))
;; Procedure Invocation (Application)
((proc-expr arg-exprs ...)
(apply (evaluate proc-expr env)
(map (lambda (arg-expr)
(evaluate arg-expr env))
arg-exprs)))))
https://community.spritely.institute (Code: OCAPN2023)