Это можно рассматривать как начало с последовательности карт, отфильтровывая последовательность значений: a и отдельную последовательность скользящей суммы значений: b, а затем отображая функцию двух аргументов на два производных последовательности.
создать последовательность только значений: a и: b с помощью
(map :a my-vec)
(map :b my-vec)
затем функция для получения скользящей суммы:
(defn sums [sum seq]
"produce a seq of the rolling sum"
(if (empty? seq)
sum
(lazy-seq
(cons sum
(recur (+ sum (first seq)) (rest seq))))))
затем сложите их вместе:
(map #(prn %1 %s) (map :a my-vec) (sums 0 (map :b my-vec)))
Этот отделяет проблему генерации данных от обработки . Надеюсь, это облегчит жизнь.
PS: какой лучший способ получить скользящую сумму?