Fork me on GitHub
#clojure-spec
<
2021-10-28
>
peterdee22:10:33

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?

peterdee22:10:35

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

peterdee22:10:54

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

peterdee22:10:38

Thanks. My program is happy again.

peterdee22:10:06

Guess I should have looked at the commit log!

peterdee23:10:56

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.