コード例 #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))
コード例 #2
0
ファイル: builtin.py プロジェクト: longlongtech/serval
 def inner(arg, count):
     if arg is EmptyList:
         return count
     return inner(cdr(arg), count + 1)
コード例 #3
0
ファイル: sequence.py プロジェクト: longlongtech/serval
def rest_exprs(seq):
    return cdr(seq)
コード例 #4
0
ファイル: sequence.py プロジェクト: longlongtech/serval
def is_last_expr(seq):
    return cdr(seq) is EmptyList
コード例 #5
0
ファイル: sequence.py プロジェクト: longlongtech/serval
def begin_actions(expr):
    return cdr(expr)
コード例 #6
0
def cond_actions(clause):
    return cdr(clause)
コード例 #7
0
def rest_operands(ops):
    return cdr(ops)
コード例 #8
0
def cond_clauses(expr):
    return cdr(expr)
コード例 #9
0
ファイル: binding.py プロジェクト: mberkanbicer/serval
 def inner(expr):
     if expr is EmptyList:
         return EmptyList
     return cons(cadar(expr), inner(cdr(expr)))
コード例 #10
0
def operands(expr):
    return cdr(expr)
コード例 #11
0
ファイル: builtin.py プロジェクト: mberkanbicer/serval
 def inner(arg, count):
     if arg is EmptyList:
         return count
     return inner(cdr(arg), count + 1)
コード例 #12
0
ファイル: binding.py プロジェクト: longlongtech/serval
 def inner(expr):
     if expr is EmptyList:
         return EmptyList
     return cons(cadar(expr), inner(cdr(expr)))
コード例 #13
0
ファイル: sequence.py プロジェクト: mberkanbicer/serval
def rest_exprs(seq):
    return cdr(seq)
コード例 #14
0
ファイル: sequence.py プロジェクト: mberkanbicer/serval
def is_last_expr(seq):
    return cdr(seq) is EmptyList
コード例 #15
0
ファイル: sequence.py プロジェクト: mberkanbicer/serval
def begin_actions(expr):
    return cdr(expr)