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 <leif.p...@gmail.com <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 clo...@googlegroups.com > <javascript:> > > Note that posts from new members are moderated - please be patient with > your first post. > > To unsubscribe from this group, send email to > > clojure+u...@googlegroups.com <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 clojure+u...@googlegroups.com <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 clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com 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 clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.