理系学生日記

おまえはいつまで学生気分なのか

問題2-21

リストの要素を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)