A library containing macros for use in clojure threading expressions (using ->).
See reference documentation and annotated source.
Examples
Threaded arg exposure:
arg-> exposes the threaded arg, binding it to the supplied variable. For
example:
(-> 2 (arg-> [x] (* (inc x)))) ;=> 6
Expands to:
(-> 2 ((fn [arg] (let [x arg] (-> arg (* inc x)))))) ;=> 6
Note the extra set of parens in the expansion; the threading macro feeds the
current argument in as arg, binds it to the supplied var using let, and
resumes threading for all forms inside of arg->.
Threaded list comprehension:
The following use of for->:
(-> 1 (for-> [x [1 2 3]] (+ x))) ;=> 7
Expands to:
(-> 1 (+ 1) (+ 2) (+ 3)) ;=> 7
Installation
thread-expr is distributed as a jar, and is available in the clojars repository.
Installation is with leiningen or your favourite maven repository aware build tool.
lein/cake project.clj
:dependencies [[com.palletops/thread-expr "1.3.0"]]
maven pom.xml
<dependencies>
<dependency>
<groupId>org.cloudhoist</groupId>
<artifactId>thread-expr</artifactId>
<version>1.3.0</version>
</dependency>
<dependencies>
<repositories>
<repository>
<id>clojars</id>
<url>http://clojars.org/repo</url>
</repository>
</repositories>
License
Licensed under EPL
Copyright 2011, 2012, 2013 Hugo Duncan.