EoPL reading (60) 2.2 An Abstraction for Inductive Data Type
On Lisp の日本語訳の最初らへんを見ててやっぱ直そ、と思い修正検討着手。
こんなになった。
(add-load-path ".") (load "define-datatype") (load "bintree") (load "leaf-sum") (define max-interior (lambda (tree) (define (max-interior-inner rslt t) (let ((x (leaf-sum t))) (cases bintree t (interior-node (key left right) (let ((rettmp (if (or (> x (cadr rslt)) (not (car rslt))) (list key x) rslt)) (end (and (eq? 'leaf-node (car left)) (eq? 'leaf-node (car right))))) (let ((ret (if (eq? 'leaf-node (car left)) rettmp (max-interior-inner rettmp left)))) (if end rettmp (max-interior-inner ret right))))) (else rslt))) ) (car (max-interior-inner '(#f 0) tree)) ) )
一応試験にはパスしてますがまだ微妙。ドリカムも終わったので寝ます。