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
|
elsif elem[0] == :lambda
|
||||||
_, params, body = elem
|
_, params, body = elem
|
||||||
->(*args) { lisp_eval body, env.merge(Hash[params.zip(args)]) }
|
->(*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
|
else
|
||||||
args = []
|
args = []
|
||||||
elem[1..-1].each { |arg| args << lisp_eval(arg, env) }
|
elem[1..-1].each { |arg| args << lisp_eval(arg, env) }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue