def binding_values(expr): def inner(expr): if expr is EmptyList: return EmptyList return cons(cadar(expr), inner(cdr(expr))) return inner(cadr(expr))
def definition_value(expr): if is_symbol(cadr(expr)): return caddr(expr) return make_lambda(cdadr(expr), cddr(expr))
def definition_variable(expr): if is_symbol(cadr(expr)): return cadr(expr) return caadr(expr)
def assignment_variable(expr): return cadr(expr)
def lambda_parameters(expr): return cadr(expr)
def if_predicate(expr): return cadr(expr)
def primitive_implementation(expr): return cadr(expr)
def procedure_parameters(expr): return cadr(expr)
def text_of_quotation(expr): return cadr(expr)