(chan) (chan buf-or-n) (chan buf-or-n xform) (chan buf-or-n xform ex-handler)
Creates a channel with an optional buffer, an optional transducer (like (map f), (filter p) etc or a composition thereof), and an optional exception-handler. If buf-or-n is a number, will create and use a fixed buffer of that size. If a transducer is supplied a buffer must be specified. ex-handler must be a fn of one argument - if an exception occurs during transformation it will be called with the Throwable as an argument, and any non-nil return value will be placed in the channel.
user=> (def c (chan))
#'user/c
user=> (def c (chan 1))
#'user/c
user=> (def c (chan (buffer 2)))
#'user/c
;; Clojure 1.7
user=> (def c (chan 1 (filter string?)))
#'user/c