RosettaCodeData/Task/Formal-power-series/Clojure/formal-power-series-2.clj
Ingy döt Net db842d013d A-M baby
2013-04-10 21:29:02 -07:00

9 lines
394 B
Clojure

(defn ps*
([ps0 ps1] (ps* [0] ps0 ps1))
([[a0 & resta] [p0 & rest0] [p1 & rest1 :as ps1]]
(lazy-seq
(cons
(+ a0 (* p0 p1))
(let [mrest1 (if (or (nil? rest1) (zero? p0)) nil, (map #(* p0 %) rest1))
accum (cond (nil? resta) mrest1, (nil? mrest1) resta, :else (ps+ resta mrest1))]
(if (nil? rest0) accum, (ps* (or accum [0]) rest0 ps1)))))))