Exemple #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_exp(cond_actions(first))
        else:
            raise ValueError("ELSE clause isn't last: %s" % clauses)
    else:
        return make_if(cond_predicate(first),
                       sequence_exp(cond_actions(first)), expand_clauses(rest))
Exemple #2
0
 def inner(arg, count):
     if arg is EmptyList:
         return count
     return inner(cdr(arg), count + 1)
Exemple #3
0
def rest_exprs(seq):
    return cdr(seq)
Exemple #4
0
def is_last_expr(seq):
    return cdr(seq) is EmptyList
Exemple #5
0
def begin_actions(expr):
    return cdr(expr)
Exemple #6
0
def cond_actions(clause):
    return cdr(clause)
Exemple #7
0
def rest_operands(ops):
    return cdr(ops)
Exemple #8
0
def cond_clauses(expr):
    return cdr(expr)
Exemple #9
0
 def inner(expr):
     if expr is EmptyList:
         return EmptyList
     return cons(cadar(expr), inner(cdr(expr)))
Exemple #10
0
def operands(expr):
    return cdr(expr)
Exemple #11
0
 def inner(arg, count):
     if arg is EmptyList:
         return count
     return inner(cdr(arg), count + 1)
Exemple #12
0
 def inner(expr):
     if expr is EmptyList:
         return EmptyList
     return cons(cadar(expr), inner(cdr(expr)))
Exemple #13
0
def rest_exprs(seq):
    return cdr(seq)
Exemple #14
0
def is_last_expr(seq):
    return cdr(seq) is EmptyList
Exemple #15
0
def begin_actions(expr):
    return cdr(expr)