From 94599c5e4ad37278522497455f3a105a9567dfc6 Mon Sep 17 00:00:00 2001 From: vonhyou Date: Wed, 14 Apr 2021 09:43:28 +0800 Subject: [PATCH] add lambda! --- minlisp.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/minlisp.rb b/minlisp.rb index ba1b3c6..3c749f1 100644 --- a/minlisp.rb +++ b/minlisp.rb @@ -91,6 +91,9 @@ def lisp_eval(elem, env = $global_env) _, cod, if_true, if_false = elem exp = lisp_eval(cod, env) ? if_true : if_false lisp_eval exp, env + elsif elem[0] == :lambda + _, params, body = elem + ->(*args) { lisp_eval body, env.merge(Hash[params.zip(args)]) } else args = [] elem[1..-1].each { |arg| args << lisp_eval(arg, env) } @@ -114,4 +117,4 @@ def print_value(value) puts ";Value: #{value.to_s}" end -# repl() +repl()