Lisp Scheme Part26
■ このスレッドは過去ログ倉庫に格納されています
0800792
2009/07/12(日) 19:37:44(define (cata ls)
(if (<= (length ls) 1)
ls
(cata1 ls 1)))
(define (cata1 ls i)
(if (= i (- (length ls) 1))
(product (cata (take ls i))
(cata (drop ls i)))
(append (product (cata (take ls i))
(cata (drop ls i)))
(cata1 ls (+ i 1)))))
(define (product ls1 ls2)
(if (null? ls1)
'()
(append (map (lambda (x) (cons (car ls1) (list x))) ls2)
(product (cdr ls1) ls2))))
> (cata '(1 2 3 4))
((1 (2 (3 4))) (1 ((2 3) 4)) ((1 2) (3 4)) ((1 (2 3)) 4) (((1 2) 3) 4))
>
■ このスレッドは過去ログ倉庫に格納されています