On Monday, 21 March 2016 at 11:48:52 UTC, Seb wrote:
On Monday, 21 March 2016 at 11:35:49 UTC, Timothee Cour wrote:
assert(9.iota.emit!(int,(put,a){if(a%2) put(a*a);}).equal([1, 9, 25, 49]))
I support idea to have such feature, sometimes it really need.


Could you try to point out whats wrong with map & filter?

assert(9.iota.filter!"a%2".map!"a*a".equal([1, 9, 25, 49])

map: 1 element -> 1 element
filter: 1 element -> 0..1 element(s)

emit: 1 element -> 0..infinite elements

This feature is more generic then map() and filter() together. But proposed implementation is not good. I think this is good place for generator function with yield. If map() will accept generators and process it as expected, different from ordinary functions, then additional emit() method is not needed. And filter() too :)

Reply via email to