Ejemplo n.º 1
0
def expand_clauses(clauses):
    if clauses is EmptyList:
        return Boolean(False)

    first = car(clauses)
    rest = cdr(clauses)

    if is_cond_else_clause(first):
        if rest is EmptyList:
            return sequence_expr(cond_actions(first))
        else:
            raise ValueError('ELSE caluse isn\'t last: %s' % clauses)
    else:
        return make_if(cond_predicate(first), 
                sequence_expr(cond_actions(first)), expand_clauses(rest))
Ejemplo n.º 2
0
def rest_operands(ops):
    return cdr(ops)
Ejemplo n.º 3
0
def operands(expr):
    return cdr(expr)
Ejemplo n.º 4
0
def rest_exprs(seq):
    return cdr(seq)
Ejemplo n.º 5
0
def is_last_expr(seq):
    return cdr(seq) is EmptyList
Ejemplo n.º 6
0
def begin_actions(expr):
    return cdr(expr)
Ejemplo n.º 7
0
 def inner(arg, count):
     if arg is EmptyList:
         return count
     return inner(cdr(arg), count + 1)
Ejemplo n.º 8
0
def cond_clauses(expr):
    return cdr(expr)
Ejemplo n.º 9
0
def cond_actions(clause):
    return cdr(clause)
Ejemplo n.º 10
0
 def inner(expr):
     if expr is EmptyList:
         return EmptyList
     return cons(cadar(expr), inner(cdr(expr)))
Ejemplo n.º 11
0
 def inner(arg, count):
     if arg is EmptyList:
         return count
     return inner(cdr(arg), count + 1)
Ejemplo n.º 12
0
def rest_exprs(seq):
    return cdr(seq)
Ejemplo n.º 13
0
def is_last_expr(seq):
    return cdr(seq) is EmptyList
Ejemplo n.º 14
0
def begin_actions(expr):
    return cdr(expr)