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?
Are you looking for register @peterd? https://github.com/clojure/spec-alpha2/blob/master/src/main/clojure/clojure/alpha/spec.clj#L429
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???
You probably want resolve-spec or maybe create-spec depending on what you're doing
resolve-spec takes a form and returns a spec object
Ugh! How did I miss that? Yes, I think resolve-spec.
Thanks!
https://github.com/clojure/spec-alpha2/commit/bab9b91d2b8490e9c7bdbf3b1500636b28bb4e75
Thanks. My program is happy again.
Guess I should have looked at the commit log!
I think https://clojure.github.io/spec-alpha2/ is relatively synced to the code too
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.