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

if じゃなくて cond を使おう

Scheme の if 式は (if <test> <then> <else>) という感じなので、 if (a == 1) { printf("a is 1"); } else if (a == 2) { printf("a is 2"); } else if (a == 3) { printf("a is 3"); } else if (a == 4) { printf("a is 4"); } else { printf("unknown"); } という条件分岐</else></then></test>…

リスト操作の罪悪感

Scheme をやっていて感じる罪悪感は、リスト操作の愚直性だ。例えば、リストの長さを得る手続き list-length は (define list-length (lambda (a) (let loop ((x a) (len 0)) (if (null? x) len (loop (cdr x) (+ len 1)))))) こんな感じなんだけど、これを …

null?、pair?、list? 手続き

Scheme にはリストの種類を判別するための手続きは、3 つある。 null? (null? '()) ; => #t (null? (list)) ; => #t (null? '(a)) ; => #f (null? 'a) ; => #f null? 手続きは、とにかく空リストだった場合は #t を返す。 pair? (pair? '()) ; => #f (pair? …