Pipeline: a monadic workflow for Clojure apps.
Facilities for data transformation and validation in real-world Clojure applications.
Installation
Add this to you project.clj
or build.boot
:
[io.thdr/pipeline "0.1.0"]
What's included?
- A
pipeline->
(>>=->
) andpipeline->>
(>>=->>
) macros which work like Clojure's threading macros but thread an expression through a chain of monadic binds (>>=
). thdr.pipeline.validations
namespace for working with data validation. Build on top ofValidation
applicative functor which works likeEither
monad, but can aggregate validation errors. Includes helpers for composing validations, validating associative data structures and transforming validations toEither
monads.thdr.pipeline.schema
namespace for working with Schema checks and coercions within monadic context.- Various helpers to handle exceptions, eithers etc.
Usage
I'm going to write some guides as soon as possible. For now check:
- Source code: I documented almost every function.
- Tests
- Examples
Notes
Built on top of cats library which brings Category Theory concepts to Clojure.
Contributing
Feel free to open an issue or PR :3
License
Copyright © 2016 Theodore Konukhov me@thdr.io
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.