def eval(self, t, env):
     #if variable definition
     if t.getCdr().getCar().isSymbol():
         env.define(
             t.getCdr().getCar(),
             Cons(t.getCdr().getCdr().getCar().eval(env),
                  Nil.getInstance()))
     #If definition is for a closure
     elif t.getCdr().getCar().isPair():
         env.define(t.getCdr().getCar().getCar(),
                    Cons(Closure(t.getCdr(), env), Nil.getInstance()))
     return Nil.getInstance()
Beispiel #2
0
 def eval(self, exp, env):
     key = exp.getCdr().getCar()
     val = exp.getCdr().getCdr().getCar()
     # if defining a variable
     if key.isSymbol():
         env.define(key, val)
     # if defining a function
     else:
         func = Closure(
             Cons(exp.getCdr().getCar().getCdr(),
                  exp.getCdr().getCdr()), env)
         env.define(key.getCar(), func)
     return StrLit("no values returned")
 def eval(self, exp, env):
      return Closure(exp.getCdr(), env, trimmed=True)
 def eval(self, exp, env):
     return Closure(exp, env)