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.

Reply via email to