Clojure 1.7

  • coming in the next few weeks

Transducers

  • these evaluate to transducers now:

    (filter odd?) (map inc) (take 5)

  • and can be composed:

    (comp ; similar behaviour to thread-last macro (filter odd?) (map inc) (take 5))

  • xf is the notation for a transforming function (transducer)
  • (sequence xf (range 1000)) is the way to maintain the laziness and use transducers
  • (a/chan xf 10) is the core.async extention for applying transducers before putting on the channel

Reader conditions

  • portable code across Clojure platforms
  • new file extension .cljc
  • reader conditionals:

    ;; choose expression based on platform #?(:clj (java.util.Date.) :cljs (js/Date.))

    ;; and a splicing version [:a :b #?@(:clj [:c :d] :cljs [:e :f]]

Performance

..snip.. things are faster