Fork me on GitHub

Hi! At one time there was a function spec* in spec-alpha2 that allowed programmatic definition of specs. I don’t see that in the current SHA version. Is it still possible to define specs programmatically?


I am looking at some code I wrote about two years ago. (Wish I could recall!) I was using both s/spec* and s/register. I was using backquoted forms or variable values with spec*. Hmmm… It looks like the spec* calls are typically wrapped in a s/register, but s/register takes a spec, not a body (form) so my guess is that register isn’t going to allow programmatic operation???

Alex Miller (Clojure team)22:10:23

You probably want resolve-spec or maybe create-spec depending on what you're doing

Alex Miller (Clojure team)22:10:32

resolve-spec takes a form and returns a spec object


Ugh! How did I miss that? Yes, I think resolve-spec.


Thanks. My program is happy again.


Guess I should have looked at the commit log!


Simple programmatic access is a nice feature. I’m wrote a parser for MiniZinc, a popular open-source combinatorial solver language; it has its own language for defining data. (Will open source my parser soon). The specs allow you to catch users errors that the parser misses.