LISP Scheme Part7
■ このスレッドは過去ログ倉庫に格納されています
0239(define (´∀`) 'マターリ)
NGNG(define (flatten x)
(if (list? x) (apply append (map flatten x))
(list x)))
(flatten '(1 (2 (3 (4 5) () 6)) 7 (8 9)))
-> (1 2 3 4 5 6 7 8 9)
(append) -> () でいいと思う。
(append) から (append a) は定義できないんだろうけど。
(define (append2 x y)
(if (null? x) y
(cons (car x) (append2 (cdr x) y)))
(define (append . x)
(cond ((null? x) '())
((null? (cdr x)) (car x))
(else (append2 (car x) (apply append (cdr x))))))
>>223から変えた理由は
(let ((x '(9 8))) (eq? x (append x '()))) が
#f にならないといけないようなので。
■ このスレッドは過去ログ倉庫に格納されています