From: Tanaka Akira Date: 2003-01-22T16:01:05+09:00 Subject: Re: Lisp in Ruby? In article <1c5d01c2c1e2$d76279c0$6401a8c0@MELONBALLER>, "Chris Pine" writes: > Has anyone written a Lisp interpreter in Ruby? Or even better, a Joy > interpreter? 10 minutes Lisp (or lambda calculus) interpreter in Ruby: def eval(exp, env) case exp when Array case exp.first when :lambda lambda {|x| env2 = env.dup env2[exp[1]] = x eval(exp[2], env2) } else eval(exp[0], env).call(eval(exp[1], env)) end when Symbol env[exp] else exp # constant end end p eval([:succ, 1], {:succ => lambda {|x| x + 1}}) -- Tanaka Akira