mirror of
https://github.com/vonhyou/lisp-interpreter.git
synced 2025-06-08 02:02:01 +00:00
add logical operators
This commit is contained in:
parent
efd5b22761
commit
c265b81c43
1 changed files with 6 additions and 0 deletions
|
@ -87,6 +87,12 @@ def lisp_eval(elem, env = $global_env)
|
|||
elsif elem[0] == :lambda
|
||||
_, params, body = elem
|
||||
->(*args) { lisp_eval body, env.merge(Hash[params.zip(args)]) }
|
||||
elsif elem[0] == :and
|
||||
lisp_eval(elem[1], env) && lisp_eval(elem[2], env)
|
||||
elsif elem[0] == :or
|
||||
lisp_eval(elem[1], env) || lisp_eval(elem[2], env)
|
||||
elsif elem[0] == :not
|
||||
!lisp_eval(elem[1], env)
|
||||
else
|
||||
args = []
|
||||
elem[1..-1].each { |arg| args << lisp_eval(arg, env) }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue