Is there a more concise implementation, perhaps using `filter` or merely by making the `reduce` version more "idiomatic" somehow?
Another version I believe is more evident utilizes reductions to build a list over all the max-ending-heres. You can then just pick the maximal value in that list, giving you the maximal subarray:
(defn max-subarray [A]
(let [pos+ (fn [sum x] (if (neg? sum) x (+ sum x)))
ending-heres (reductions pos+ 0 A)]
(reduce max ending-heres)))