Maybe, the following is the same reason.

```
(defn ranged-rand   ;; BROKEN!
  "Returns random integer in range start <= rand < end"
  [start end]
  (+ start (rand-int (- start end))))

(s/fdef ranged-rand
  :args (s/and (s/cat :start integer? :end integer?)
               #(< (:start %) (:end %)))
  :ret integer?
  :fn (s/and #(>= (:ret %) (-> % :args :start))
             #(< (:ret %) (-> % :args :end))))
(ranged-rand 8 10)
;;=> ExceptionInfo Call to #'spec-example.core/ranged-rand did not conform 
to spec:
;;=> At: [:fn] val: {:args {:start 8, :end 10}, :ret 7} fails predicate: 
(>= (:ret %) (-> % :args :start))
;;=> :clojure.spec/args  (8 10)
;;=>   clojure.core/ex-info (core.clj:4617)
(println *clojure-version*)
;;=> {:major 1, :minor 9, :incremental 0, :qualifier alpha1}

(s/instrument #'ranged-rand)
(ranged-rand 8 10)
;;=> 7
(println *clojure-version*)
;;=> {:major 1, :minor 9, :incremental 0, :qualifier alpha6}
```
 

> user=> (require '[clojure.spec :as s])
> user=> (defn dummy [x] (if x "yes" "no"))
> user=> (s/fdef dummy
>   #_=>   :args (s/cat :x integer?)
>   #_=>   :ret  integer?)
> user=> (s/instrument #'dummy)
> user=> (dummy 3) (println *clojure-version*)
> ExceptionInfo Call to #'user/dummy did not conform to spec:
> val: "yes" fails at: [:ret] predicate: integer?
> :clojure.spec/args  (3)
>   clojure.core/ex-info (core.clj:4703)
> {:major 1, :minor 9, :incremental 0, :qualifier alpha5}
>
> ;-------------------------------------------------------------------
>
> user=> (dummy 3) (println *clojure-version*)
> "yes"
> {:major 1, :minor 9, :incremental 0, :qualifier alpha6}
>

-- 
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