Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
doc
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 

README.md

NOTE: This library is totally unrelated to Clojure 1.7's new tranducers

transduce

A Clojure library providing functions for threading a state accumulator through a sequence transformation. These state/behavior pairs are sometimes called "transducers" or "state transducers".

The class of transducers which use bounded space are particularly interesting. They are known as finite state transducers.

In particular, this library provides map-state and mapcat-state, which are like their stateless namesakes. Also provided is a non-macro variant of doseq, called each. Both lazy sequence and reducers versions are available for all functions.

Usage

(require '[transduce.lazy :as t])
;OR: (require '[transduce.reducers :as t])

(do
  (->> [[:c \a] [:n 3] [:c \b] [:c \c] [:n 1] [:c \d]]
       (t/mapcat-state (fn [n [cmd arg]]
                         (case cmd
                           :n [arg nil]
                           :c [n (repeat n arg)]))
                     1)
       (t/each print))
  (println))
;=> abbbcccd
;=> nil

Installation

Transduce artifacts are published on Clojars.

To depend on this version with Lein, add the following to your project.clj:

[transduce "0.1.0"]

License

Copyright © 2013 Brandon Bloom

Distributed under the Eclipse Public License, the same as Clojure.

About

map-state, mapcat-state, etc for state transducers in Clojure

Resources

Releases

No releases published

Packages

No packages published
You can’t perform that action at this time.