I'm observing mutually recursive regex ops taking a long time to generate test.check generators. Is this expected?
(s/def ::a (s/nilable (s/cat :a ::a :b ::b :c ::c))) (s/def ::b (s/nilable (s/cat :a ::a :b ::b :c ::c))) (s/def ::c (s/nilable (s/cat :a ::a :b ::b :c ::c))) (time (s/gen ::a)) ;"Elapsed time: 3993.431793 msecs" nil Thanks, Ambrose On Mon, May 23, 2016 at 6:12 PM, Nicola Mometto <brobro...@gmail.com> wrote: > Looks like it is, in the meanwhile this patch should fix it: > http://sprunge.us/XTiA > > > > On 23 May 2016, at 23:03, Nicola Mometto <brobro...@gmail.com> wrote: > > > > Possibly CLJ-1544 related? > > > >> On 23 May 2016, at 22:59, Ambrose Bonnaire-Sergeant < > abonnaireserge...@gmail.com> wrote: > >> > >> I'm having trouble calling `s/gen`, might be some sort of AOT > compilation error. > >> (I'm guessing this line has something to do with it). > >> > >> I'm using the latest master-SNAPSHOT. > >> > >> (ns gen-load.core > >> (:require [clojure.spec :as s])) > >> > >> (s/gen integer?) > >> ;CompilerException java.lang.NoClassDefFoundError: > clojure/spec/gen$gen_for_pred, compiling:(gen_load/core.clj:4:1) > >> > >> Thanks, > >> Ambrose > >> > >> On Mon, May 23, 2016 at 5:33 PM, Ambrose Bonnaire-Sergeant < > abonnaireserge...@gmail.com> wrote: > >> I see, thanks. > >> > >> On Mon, May 23, 2016 at 5:29 PM, Rich Hickey <richhic...@gmail.com> > wrote: > >> fdef will not add doc metadata (see rationale re: not putting more > stuff in the namespaces/vars), but specs will be present when you call > ‘doc’. That doc enhancement was in a push later in the afternoon. > >> > >> > https://github.com/clojure/clojure/commit/4c8efbc42efa22ec1d08a1e9fa5dd25db99766a9 > >> > >>> On May 23, 2016, at 5:26 PM, Ambrose Bonnaire-Sergeant < > abonnaireserge...@gmail.com> wrote: > >>> > >>> Thanks Rich+team, this is awesome. > >>> > >>> Instrumented vars via `fdef` do not seem to add :doc metadata yet > >>> (which is advertised in the docstring for `fdef`). > >>> > >>> Am I missing something? > >>> > >>> Thanks, > >>> Ambrose > >>> > >>> On Mon, May 23, 2016 at 5:20 PM, Andrey Grin <andrey.g...@gmail.com> > wrote: > >>> Thank you. Yes, it seems that for recursion I can use the same > approach. As for inheritance currently I just include all parent attributes > in every child schema. As for spec definition multi-spec, as I understand > it, requires "defmethod" for every class which is probably a problem for my > case since all inheritance hierarchies are also determined at run-time. I > will need to find some approach that is both dynamic and supports precise > error messages in case validation fails. > >>> > >>> > >>> Am Montag, 23. Mai 2016 22:38:24 UTC+2 schrieb Alex Miller: > >>> I think you could apply the same idea - use a regular translation > between Java class and registered name and then always refer to the > registered name. > >>> > >>> There are probably multiple approaches to modeling inheritance, so > hard to recommend something without knowing more. In general, attributes > coming from super classes can be modeled using the parent attribute name. > And I would recommend looking into multi-spec for doing validation of a > number of "types" that could be flowing into the same location by > leveraging a multimethod that conditionally provides the spec to use. > >>> > >>> On Monday, May 23, 2016 at 3:09:46 PM UTC-5, Andrey Grin wrote: > >>> Thanks, Alex. I've taken random example from plumatic.schema wiki to > quickly illustrate the question. In my actual use case I dynamically > generate schemas based on hundreds of model Java classes (beans) with > mutual references so I need recursion (and also some way to model > inheritance, that was is achieved with "conditional" in plumatic). Will try > to implement the same with spec. > >>> > >>> > >>> -- > >>> 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. > >>> > >>> > >>> -- > >>> 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. > >> > >> -- > >> 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. > >> > >> > >> > >> -- > >> 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. > > > > -- > 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. > -- 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.