Exemple #1
0
 def _eval_binding(self, expr, env):
     # return an application
     return self._eval(
         cons(lambdaexpr.make_lambda(binding.binding_variables(expr),
                                     binding.binding_body(expr)),
              binding.binding_values(expr)),
         env)
Exemple #2
0
 def _list_of_values(self, expressions, env):
     if procedure.no_operands(expressions):
         return EmptyList
     else:
         return cons(
             self._eval(procedure.first_operand(expressions), env),
             self._list_of_values(procedure.rest_operands(expressions), env)
             )
Exemple #3
0
def make_lambda(params, body):
    return cons(Symbol('lambda'), cons(params, body))
Exemple #4
0
def make_begin(seq):
    return cons(Symbol('begin'), seq)
Exemple #5
0
def make_procedure(params, body, env):
    """Create a list"""
    return cons(Symbol('procedure'),
                cons(params, cons(body, cons(env, EmptyList))))
Exemple #6
0
 def inner(expr):
     if expr is EmptyList:
         return EmptyList
     return cons(cadar(expr), inner(cdr(expr)))
Exemple #7
0
def make_lambda(params, body):
    return cons(Symbol('lambda'), cons(params, body))
Exemple #8
0
 def inner(expr):
     if expr is EmptyList:
         return EmptyList
     return cons(cadar(expr), inner(cdr(expr)))
Exemple #9
0
def make_begin(seq):
    return cons(Symbol('begin'), seq)