練習問題1.12です。 Pascalの三角形ですね。

再帰プロセス ちょっとださい

(defn calc[v]
  (if (> (count v) 1)
    (cons (+ (first v) (second v)) (calc (next v)))
    v))
(defn nextRow[v]
  (cons 1 (calc v)))
(defn pascal[v]
  (lazy-seq
   (cons v
         (pascal (nextRow v)))))
(take 10 (pascal [1]))

反復プロセス iterateをつかったとき

(defn nextRow[v]
  (->> (partition 2 1 v)
       (map #(+ (first %) (second %)))
       (#(concat [1] % [1]))))
(take 10 (iterate #(nextRow %) [1]))

再帰プロセス consをつかったとき

(defn nextRow[v]
  (->> (partition 2 1 v)
       (map #(+ (first %) (second %)))
       (#(concat [1] % [1]))))
(defn pascal[v]
  (lazy-seq
   (cons v
         (pascal (nextRow v)))))
(take 10 (pascal [1]))