Schemeのevalでらくちんデバッグ

evalを活用して、っと。

(for-each
  (lambda (f)
    (display (eval (cons f '(tree))))
    (newline))
  '(sum-tree mul-tree reverse-tree))

21
720
(6 (5 (4 3) 2) 1)

うっほ。かなり使える感じがする。

こんなときは・・・抽象化(笑

(define (debug tests args)
  (for-each
    (lambda (f)
      (display (eval (cons f args)))
      (newline))
    tests))

としといて、

(debug '(sum-tree mul-tree reverse-tree) ; 関数たち
       '(tree))                          ; 引数たち

イイネ!!