今日のはまった

condとcaseについて。

(define (make-color r g b a)
  (lambda (cmd)
    (cond
      ((eqv? cmd 'r) r)
      ((eqv? cmd 'g) g)
      ((eqv? cmd 'b) b)
      ((eqv? cmd 'a) a))))

condの部分をcaseで置き換えるにはこうする。

(define (make-color r g b a)
  (lambda (cmd)
    (case cmd
      ((r) r)
      ((g) g)
      ((b) b)
      ((a) a))))

↓こうではない。

(define (make-color r g b a)
  (lambda (cmd)
    (case cmd
      (('r) r)
      (('g) g)
      (('b) b)
      (('a) a))))