Plumbing is a general-purpose Clojure utility belt and data transformation library endorsed for its pragmatic approach to everyday tasks. It offers a toolkit of macros and functions that simplify common data manipulation patterns, and includes a “Graph” abstraction for structured computation flows. Most of it is also compatible with ClojureScript. Graph is a simple and declarative way to specify a structured computation, which is easy to analyze, change, compose, and monitor. Here's a simple example of an ordinary function definition, and its Graph equivalent. A Graph encodes the structure of a computation, but not how it happens, allowing for many execution strategies. For example, we can compile a Graph lazily so that step values are computed as needed. Or, we can parallel-compile the Graph so that independent step functions are run in separate threads.

Features

  • fnk and defnk macros for keyword-based function definitions with schema metadata
  • A rich set of map utilities: dissoc-in, distinct-by, assoc-when, update-in-when, and more
  • Graph abstraction to declare and execute workflows as composable computational graphs
  • Async versions of graph execution via graph-async namespace
  • Core utility functions such as safe-get, lazy-get, grouped-map, swap-pair! for everyday tasks
  • Compatibility with ClojureScript for most of the library functions

Project Samples

Project Activity

See All Activity >

Categories

Libraries

License

MIT License

Follow Plumbing

Plumbing Web Site

Other Useful Business Software
Go from Code to Production URL in Seconds Icon
Go from Code to Production URL in Seconds

Cloud Run deploys apps in any language instantly. Scales to zero. Pay only when code runs.

Skip the Kubernetes configs. Cloud Run handles HTTPS, scaling, and infrastructure automatically. Two million requests free per month.
Try it free
Rate This Project
Login To Rate This Project

User Reviews

Be the first to post a review of Plumbing!

Additional Project Details

Registered

2025-08-20