2010-09-05から1日間の記事一覧

Scheme で null? 手続きを再実装

こんな感じかな。 (define null? (lambda (a) (eq? '() a))) Scheme には等価性検証に eq?、eqv?、equal? が用意されているけど、 eq? は同一性 eqv? は甘めの同一性 equal? 同値性 という風に使い分ける。Java で言うと、eq? は ==、equal? は equals(Objec…

Scheme で append 手続きを再定義(未完成)

append 手続きも再定義してみた。 (define list-append (lambda (a . b) (let loop ((a a) (b b)) (if (null? b) a ; b が空リストなら a を返す (if (null? a) ; b が空リストじゃなくて (loop (car b) (cdr b)) ; a が空リストなら b の car と cdr で再帰…