今日も埋め草的エントリ。
再帰の練習として 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)