Thanks for this explanation. I think that cleared up some of this for me
more. I'm certainly excited about this new addition. I should have
started off with that.
On Wednesday, May 25, 2016 at 8:01:49 PM UTC-5, Rich Hickey wrote:
>
> I’d advise everyone concerned/confused about the relationship between spec
> and data representations to please spend some more time trying to
> understand spec and, especially, dial back the rhetoric. I know what the
> Clojure philosophy is, and it’s not some triviality.
>
> specs are fundamentally code (predicates and logic)
>
> Clojure code is a great data format for code, designed to be written and
> read by humans. There is a reason we don’t write code in AST maps:
>
> (if x y z)
>
> vs
>
> {:tag :if-expr :test x :then y :else z}
>
> The ‘form’ function will return the spec as sexpr data. This is currently
> missing gens but that will come (if gens don’t end up somewhere else
> entirely). You can eval this data and get a running spec. Or not. If you
> don’t want to, that doesn’t make the fact that you can bad. Data doesn’t
> run, so any data-driven ‘language’ is going to need an
> interpreter/compiler.
>
> Claiming sexprs aren't ‘data’ suitable for programmatic manipulation
> denies a 50+ year Lisp history.
>
> Expecting runtime specs to ‘be’ data is no more desirable than leaving
> code as data at runtime - it would always need interpretation. Runtime
> specs are (sets of) functions, and are as binary as functions. What
> matters is that they are available as data, which they are.
>
> If you prefer an AST-like thing you are only a spec and conform call away
> from it. This is the key point people are missing who haven’t used spec
> enough. If you have an sexpr or other data-format syntax you don’t need to
> write a parser, you need to write a spec. conform will destructure for you.
>
> We intend to provide specs for spec which can be used for these and other
> purposes.
>
> Rich
>
> > On May 25, 2016, at 7:11 PM, Leif <[email protected] <javascript:>>
> wrote:
> >
> > I guess I'm confused why the Clojure philosophy of "data > fns > macros"
> is being ignored in this particular case, when the other schema libraries
> show that there is an army of end-users that want to do unexpected things
> with specifications, and to do that, it would be easiest if they had data
> IRs, c.f. the Schema model:
> >
> > macros to look nice ->
> > data repr ->
> > -compile to-> validator or
> > -translate to-> data repr with subgenerators attached ->
> > -compile to-> generator or
> > -compile to-> ??? something a clever tester dreamed up ???
> or
> > -compile to-> fn returning nice error message or
> > -compile to-> ??? something a clever user dreamed up ???
> >
> > I'll leave it at that, I've put my 6 cents in.
> >
> > --
> > You received this message because you are subscribed to the Google
> > Groups "Clojure" group.
> > To post to this group, send email to [email protected]
> <javascript:>
> > Note that posts from new members are moderated - please be patient with
> your first post.
> > To unsubscribe from this group, send email to
> > [email protected] <javascript:>
> > For more options, visit this group at
> > http://groups.google.com/group/clojure?hl=en
> > ---
> > You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> > To unsubscribe from this group and stop receiving emails from it, send
> an email to [email protected] <javascript:>.
> > For more options, visit https://groups.google.com/d/optout.
>
>
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.