理系学生日記

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

問題2-36

なんかスゲー書きにくい問題。
リストのリストを引数として取って、そのリストのリストの添え字のおなじ各要素に対して演算した後、その結果をリストにして返すよ。
こうやったらできるよ!

(define (accumulate-n op init seqs)
  (if (null? (car seqs))
      ()
      (cons (accumulate op init (map car seqs))
	    (accumulate-n op init (map cdr seqs)))))

結果はこうやったら分かるよ!

gosh> (accumulate-n + 0 (list (list 1 2 3) (list 4 5 6) (list 7 8 9) (list 10 11 12)))
(22 26 30)