I would like to see Swift gain something similar to Clojure’s Reducers Library. 
 Basically this is somewhat similar to our Sequence, but for tree-based 
structures instead of sequential ones.  It allows a series of algorithms that 
operate using a divide and conquer strategy, and it is easy to massively 
parallelize.

One interesting property is that, because you don’t have to work sequentially, 
you are able to take a series of calls that do the equivalent of 
map/filter/flatMap, and compose the functions to make a single call on each 
piece of data (thus you don’t have build or recurse over intermediate 
sequences).  Everything can be done in a single pass (and that pass can be done 
in parallel).  It can be a big win in terms of efficiency.

Here is a blog post where someone benchmarked ‘fold’ from the reducers library 
(306ms) vs sequence-based reduce (1450ms):
https://adambard.com/blog/clojure-reducers-for-mortals/

Here is another post explaining how the idea might work in Python:
https://adambard.com/blog/Reducers-explained-through-Python/

Finally here is a video one of the developers of Clojure talking about why this 
pattern is so great (just after the 19 min mark):
https://www.infoq.com/presentations/Clojure-Design-Patterns

Adding something like this to Swift would be a great boon by providing generic 
parallelizable algorithms…

Thanks,
Jon
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to