I am trying to write a higher order function in clojure.spec <http://clojure.org/guides/spec> with version 1.9.0-alpha12 and have not been able to get the validation to execute against the returned function.
Using the example in the *Higher order functions* section of the clojure.spec guide, I define an adder form as: (defn adder [x] #(+ x %)) As described in the guide, I create a spec as: (s/fdef adder :args (s/cat :x number?) :ret (s/fspec :args (s/cat :y number?) :ret number?) :fn #(= (-> % :args :x) ((:ret %) 0))) When I execute it in the repl, an exception is thrown instead of the desired spec validation error: user> (def add2 (adder 2)) #'user/add2 user> (add2 2) 4 user> (add2 "s") ClassCastException java.lang.String cannot be cast to java.lang.Number clojure.lang.Numbers.add (Numbers.java:128) user> I attempted to turn spec'ing on with (stest/instrument `adder). While this works for functions, it is not working for *Higher order functions*. -- 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.