Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Macros for working with clojure argument threading
Failed to load latest commit information.
src/pallet Add indentation metadata to macros
test/pallet makes 1.3 compatible while maintaining 1.2 backwards compatibility
.gitignore Use lein as the build tool and deploy to clojars
README.md
ReleaseNotes.md Updated project.clj, release notes and readme for 1.3.0
epl-v10.html
profiles.clj
project.clj Updated version for next release cycle
release.sh Use lein as the build tool and deploy to clojars

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.