リストの要素を2乗したリストかえす。
あんまし抽象度高くないやつ。
(define (square-list items) (if (null? items) () (cons ((lambda (x) (* x x)) (car items)) (square-list (cdr items)))))
抽象度ちょっと高いやつ。
(define (map proc items) (if (null? items) () (cons (proc (car items)) (map proc (cdr items))))) (define (square-list items) (map (lambda (x) (* x x)) items))
もちろん結果はおなじになる。
gosh> (square-list (list 1 2 3 4)) (1 4 9 16)