pallet.thread-expr

https://github.com/pallet/thread-expr.git

git clone 'https://github.com/pallet/thread-expr.git'

(ql:quickload :pallet.thread-expr)
35

pallet.thread-expr

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.