2010/09/06

append

ちゃんと書こうとすると、意外と難しいですね。

これだと (append '() 1) が 1 にならないですね。

こんな感じでしょうか。


最近、諸事情により昼間にパソコンを開く時間があまりありません。。

追記

(use srfi-1)
(define (list-append x . n)
  (if (null? n)
      x
      (unfold null? car cdr x
              (lambda _
                (apply list-append n)))))

なるほど!そういえば・・・

追記2

reduce-right!
(use srfi-1)
(define (list-append . xss)
 (reduce-right append1 '() xss))

The Little Schemer, 4th Edition

0 件のコメント:

コメントを投稿