LISP Scheme Part5
■ このスレッドは過去ログ倉庫に格納されています
0377デフォルトの名無しさん
NGNGかっこいい高階関数の例を教えてもらえませんか?
例えばこんなの。
(define (for-each-tree f g n tree)
;; depth-first
(cond ((null? tree) n)
((not (list? tree)) (f tree))
(else
(g (for-each-tree f g n (car tree))
(for-each-tree f g n (cdr tree))))))
(define (flat tree)
(for-each-tree list append () tree))
(define (sum tree)
(for-each-tree + + 0 tree))
(define (map-tree f tree)
(for-each-tree f cons () tree))
(define tree '(1 (2 3) (4 (5 6) 7 ((8)) 9 10)))
> (flat tree)
(1 2 3 4 5 6 7 8 9 10)
> (sum tree)
55
> (map-tree - tree)
(-1 (-2 -3) (-4 (-5 -6) -7 ((-8)) -9 -10))
■ このスレッドは過去ログ倉庫に格納されています