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