Macros for working with clojure argument threading
Pull request Compare This branch is 20 commits behind pallet:develop.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src/pallet
test/pallet
.gitignore
README.md
ReleaseNotes.md
epl-v10.html
finish-release.sh
pom.xml
start-release.sh

README.md

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 sonatype repository.

Installation is with maven or your favourite maven repository aware build tool.

lein/cake project.clj

:dependencies [[org.cloudhoist/thread-expr "1.1.0"]]
:repositories {"sonatype"
               "http://oss.sonatype.org/content/repositories/releases"}

maven pom.xml

<dependencies>
  <dependency>
    <groupId>org.cloudhoist</groupId>
    <artifactId>thread-expr</artifactId>
    <version>1.1.0</version>
  </dependency>
<dependencies>

<repositories>
  <repository>
    <id>sonatype</id>
    <url>http://oss.sonatype.org/content/repositories/releases</url>
  </repository>
</repositories>

License

Licensed under EPL

Copyright 2011 Hugo Duncan.