Data-Driven Development Is a Lie
Instead, you declare data structures, primarily maps, and whoosh: there is a kind of Deus ex Machina that evaluates these maps and does the stuff. We declare a vector of maps where each map represents a subset of the context. The rules are no longer data but a poorly designed DSL. The logic used to scan a vector of maps has grown into a poorly designed interpreter. Use the standard Clojure facilities like functions and maps but not DSL and DDD. By the way, do you know that DDD has been with us for years? It's good old XML! There have been times when developers were obsessed with XML. That markup language was everywhere: to describe forms, settings, dependencies, workflow, schemas and even data transformation and logic! Would you like to maintain a project where every single bit is an XML file? I can even try some expressions in REPL. But how in the world are you going to debug a map? It's unthinkable because it's just data. You cannot blame a map! You need to debug your framework, which is much harder than debugging a single function. The framework tried to compare to maps, but it failed with NPE. What were these maps? You'll never know.