Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Macros for working with clojure argument threading

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 src
Octocat-spinner-32 test
Octocat-spinner-32 .gitignore
Octocat-spinner-32 README.md
Octocat-spinner-32 ReleaseNotes.md
Octocat-spinner-32 epl-v10.html
Octocat-spinner-32 profiles.clj
Octocat-spinner-32 project.clj
Octocat-spinner-32 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 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.

Something went wrong with that request. Please try again.