Thank you Rich, here is why I wasn't at ease with generating all paths: *recursion-limit* is documented as being a soft limit, so I don't know even a lower bound or when to stop generating paths
Suffix match wouldn't be a panacea, it's just a (bad) quickfix. Paths form a regular language so regexes as keys in the override map would be a better solution. It would allow overriding a spec based on its context (any ancestor) while suffix match would only allow overriding a spec based on its closer ancestors (so one would still need to generate paths or suffixes to emulate that). Christophe On Wed, May 25, 2016 at 6:48 PM, Rich Hickey <richhic...@gmail.com> wrote: > user=> (s/def ::a (s/or :r (s/cat :a ::a) > :k keyword?)) > :user/a > > user=> (binding [s/*recursion-limit* 2] > (map first (s/exercise ::a 10))) > > (((:B)) :? (:+/K) (:Xc_D.__.+HC/JaCD) ((:*3)) :gJ1z.o.+?.lC0/!-ZDN9 > :D.-?I.q8.z/-5* (:F67jy+2M.bB_.h62Cp+?._X?b6gv4.x+7.Gz_6.v9Tt15/*) > :!4J??+/-8?8_- ((:*JZAg**x!.qE3-.sh._?e/_!?T))) > > user=> (binding [s/*recursion-limit* 2] > (map first (s/exercise ::a 10 {[:k] (gen/return :k) > [:r :a :k] (gen/return :a) > [:r :a :r :a :k] (gen/return :aa)}))) > > (:k (:a) ((:aa)) :k :k :k :k :k (:a) :k) > > I’ll have to think about the suffixes > > > On May 25, 2016, at 7:56 AM, Christophe Grand <christo...@cgrand.net> > wrote: > > > > Speaking of recursive definitions: how to provide an override in a > recursive spec? > > Would it be possible to have path suffixes (in addition to paths not in > replacement of) in the override map? > > > > Thanks, > > > > Christophe > > > > On Mon, May 23, 2016 at 6:16 PM, Alex Miller <a...@puredanger.com> > wrote: > > Yes, you can create recursive definitions by registering a spec that > refers to itself via registered name (a namespaced keyword). > > > > > > On Monday, May 23, 2016 at 11:13:24 AM UTC-5, Andrey Grin wrote: > > Is it planned to support recursive definitions? Example from.plumatic > schema: > > > > (def BinaryTree > > > > ( > > maybe ;; any empty binary tree is represented by nil > > > > { > > :value > > long > > > > :left (recursive > > #'BinaryTree) > > > > :right (recursive #'BinaryTree)})) > > > > -- > > 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. > > > > > > > > -- > > On Clojure http://clj-me.cgrand.net/ > > Clojure Programming http://clojurebook.com > > Training, Consulting & Contracting http://lambdanext.eu/ > > > > -- > > 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. > -- On Clojure http://clj-me.cgrand.net/ Clojure Programming http://clojurebook.com Training, Consulting & Contracting http://lambdanext.eu/ -- 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.