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.

Reply via email to