Quiz Solution
(define interleave
(lambda (ls1 ls2)
(cond
((null? ls1) ls2)
((null? ls2) ls1)
(else (append (list (car ls1) (car ls2))
(interleave (cdr ls1) (cdr ls2)))))))
(define count-parens
(lambda (ls)
(cond
((null? ls) 2)
((list? (car ls)) (+ (count-parens (car ls))
(count-parens (cdr ls))))
(else (count-parens (cdr ls))))))
(define infix->prefix
(lambda (exp)
(if (or (symbol? exp) (number? exp))
exp
(list (cadr exp)
(infix->prefix (car exp))
(infix->prefix(caddr exp))))))
(define types-all
(lambda (exp)
(cond
((symbol? exp) 'symbol)
((number? exp) 'number)
((boolean? exp) 'boolean)
((char? exp) 'character)
((string? exp) 'string)
((null? exp) '())
(else (cons (types-all (car exp))
(types-all (cdr exp)))))))
chaynes@indiana.edu