FYI, s/fdef takes a qualified symbol, not a keyword, and it should refer to a function of the same qualified name. But you could do this instead to address that:
(s/def ::a-fn (s/fspec :args (s/cat :arg ::a) :ret ::a)) How could this even generate anything? That is, what would you expect it to generate? There's no spec here that says anything about how to actually create a concrete piece of data (there are no preds!). Because the maps are using required keys, it has to try to create them. On Sunday, January 1, 2017 at 9:04:20 PM UTC-6, John Schmidt wrote: > > I just ran in to a similar issue: > > ----------------------------- > > (require '[clojure.spec :as s]) > > (s/def ::a (s/keys :req [::b])) > > (s/fdef ::a-fn > :args (s/cat :arg ::a) > :ret ::a) > > (s/def ::b (s/keys :req [::a-fn])) > > ;; All of these fail even with s/*recursion-limit* bound to 1. > > (s/exercise ::a) ;; StackOverflowError clojure.test.check.rose-tree/pure > (rose_tree.cljc:-1) > (s/exercise ::b) ;; StackOverflowError > clojure.lang.Numbers$LongOps.isPos (Numbers.java:447) > (s/exercise ::a-fn) ;; StackOverflowError clojure.lang.AFn.applyToHelper > (AFn.java:148) > > -- 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.