AFAIK channels in Common Lisp are not the same as channels in `clojure.core.async`. They are more like a way to communicate with a particular thread. In Clojure, if all you want to do is to run a series of computations in a separate thread, you're better off with just using a `future` or `pmap` (although it's commonly recommended to avoid `pmap` and instead use something that can be controlled). An async channel in Clojure would be useful if you want to feed the values in one location, maybe add some computation on top of them in the second location, and receive the results in a third location, where those locations might not know about each other at all. E.g. a producer might use `(a/to-chan! (range 1 11))`, a transformer might use `(a/map #(/ % 2) [channel])`, and a consumer might use `(a/go (let [all-values (a/<! (a/into [] transformed-channel))] ...))`.