今日も埋め草的エントリ。
再帰の練習として take と drop を書いてみた。
take
gosh> (define take
(lambda (n lis)
(define f
(lambda (m l1 l2)
(if (= m 0)
(reverse l2)
(f (- m 1) (cdr l1) (cons (car l1) l2)))))
(f n lis '())))
take
gosh> (take 2 '(1 2 3 4 5))
(1 2)
drop
gosh> (define drop
(lambda (n lis)
(if (= n 0)
lis
(drop (- n 1) (cdr lis)))))
drop
gosh> (drop 2 '(1 2 3 4 5))
(3 4 5)