Clojure library to explore inversion of control technique - in several senses.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


The basic idea

It is always better to separate the 'what' from the 'how', it is better to put dependency as a value rather than as the result of another function call.

This is an experiment to see what happens if we structure our system as goals (values/things/nouns) and dependencies between them.

What is the problem again?

Watch this. A bit different domain and a different solution but he is speaking about the same issue in the next 3 minutes.

maker is

  • still in alpha!
    • pls help to improve and give feedback
  • influenced by dependency injection frameworks, goal oriented programming, declarative programming, build tools, data flow programming, value-level programming, transducers


  • dependency tracking by looking for functions based on the names of the parameters
  • works across namespaces,
  • asynchronous goals, parallel execution,
  • implicit dependencies,
  • spec for goals

Usage, learn

[maker "2.0.2-alpha"]

To learn check out and play with the didactic tests.

See how to add spec to your goals: spec_test.clj


Copyright © 2015-2017 Tamás Jung

Distributed under the MIT License.