That's why I'm not trying to make it typed. Instead of
Map a (Map b c)
I'm dropping down to something like Map Int (Map Text a)
Map Int (Map Text Text)
[Map Text Text]
Vector (Map Text Text)
...which is more like what's really going on in Clojure.Come to think about it, assoc-in is a great example of why I want static types. It's very hard to figure out what that function does from reading the documentation. There's no type signature to help me, the description doesn't give me much more to go on. Reading the examples leaves me wondering whether I actually understand what it's doing or if I'm missing some corner case.
> it will generate and run tests for all functions that have specs
But you have to write the specs. And that's the code I'm talking about. Fundamentally the generator can't just know what behavior you want and what you don't want. You have to tell it.