[ASYNC-38] keep</> instead of map</> Created: 18/Nov/13 Updated: 18/Nov/13
|Reporter:||Leon Grapenthin||Assignee:||Rich Hickey|
|Labels:||documentation, enhancement, errormsgs|
One problem with using map< is when the supplied function returns nil. In such case (using the latest implementation from core.async [org.clojure/core.async "0.1.256.0-1bf8cf-alpha"]) one can take nil from a channel created with map<. This is otherwise only possible with closed channels. Putting nil on a channel normally throws an IllegalArgumentException.
With the current implementation of map< it is not possible to determine whether the source-channel was closed or the supplied function returned nil.
Notice that putting onto a channel created with map> throws an IllegalArgumentException when the supplied function returns nil as if you would put nil onto a channel.
My proposal is to add keep</> (where nil values returned from the supplied function are ignored and nothing is put) to the core library or to implement map</> as keep</> since having a real map</> instead of keep</> hardly makes sense when nil is not permitted anyways.