Playing with core.async, I quickly found the need for a
chan? predicate. Evidently this is a longstanding suggestion and it seems that the recommendation is to simply build your own based on the relevant protocols. This is, in fact, what Cognitect’s own Pedestal does. The only catch is that the protocols in question are under
clojure.core.async.impl, which is not part of the official API documentation.
I gather that long-term backward compatibility is a hallmark of the Clojure ecosystem (and a big selling point as far as I’m concerned), so perhaps the lack of documentation is considered no more than a minor oversight. Is this example an anomaly, or is it just common in the Clojure world to be casual about the distinction between public APIs and private implementation details?