예제 #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))
예제 #2
0
def first_operand(ops):
    return car(ops)
예제 #3
0
def operator(expr):
    return car(expr)
예제 #4
0
def first_expr(seq):
    return car(seq)
예제 #5
0
def cond_predicate(clause):
    return car(clause)
예제 #6
0
def first_expr(seq):
    return car(seq)