・リストの長さを計算するlengthを直接(foldを使わずに)定義してみる。
(define (length l)
(if (null? l)
0
(+ 1 (length (cdr l)))))
length
gosh> (length '(a b c))
3
・リストの中から、条件を満たす要素だけを抜き出したリストを返すfilterを定義してみる
gosh> (define (filter proc l)
(if (null? l)
l
(if (proc (car l))
(cons (car l) (filter proc (cdr l)))
(filter proc (cdr l)))))
filter
gosh> (filter odd? '(1 2 3))
(1 3)
(define (length l)
(if (null? l)
0
(+ 1 (length (cdr l)))))
length
gosh> (length '(a b c))
3
・リストの中から、条件を満たす要素だけを抜き出したリストを返すfilterを定義してみる
gosh> (define (filter proc l)
(if (null? l)
l
(if (proc (car l))
(cons (car l) (filter proc (cdr l)))
(filter proc (cdr l)))))
filter
gosh> (filter odd? '(1 2 3))
(1 3)
コメント