(sicp?)pascalの三角形がつくれた

schemeでもできた。

(define (pascal n)
  (define (iter seq)
    (if (null? (cdr seq))
        '()
        (cons (+ (car seq) (cadr seq)) (iter (cdr seq)))))
  (define (make  n seq)
  (if (= n 0)
      seq
      (append seq (map iter (map (lambda (x) (append '(0) x '(0))) (make (- n 1) seq))))))
  (make n '((1))))
(for-each print (pascal 9))
;;(1)
;;(1 1)
;;(1 2 1)
;;(1 3 3 1)
;;(1 4 6 4 1)
;;(1 5 10 10 5 1)
;;(1 6 15 20 15 6 1)
;;(1 7 21 35 35 21 7 1)
;;(1 8 28 56 70 56 28 8 1)
;;(1 9 36 84 126 126 84 36 9 1)

追記

こっちの方が効率良いかも

(define (pascal n)
  (define (iter seq)
    (if (null? (cdr seq))
        '()
        (cons (+ (car seq) (cadr seq)) (iter (cdr seq)))))
  (define (pre-iter seq)
    (append '(0) seq '(0)))
  (define (make result n)
    ;(print (car result))
    (if (= n 0)
        (reverse result)
        (make (cons (iter (pre-iter (car result))) result) (- n 1))))
  (make '((1)) n))