anchor.diff:  
   The error fails the second args predicate that checks `(< start end)`. 
   
  -Imagine instead that we made an error in the ranged-rand code and swapped start and end:
  -
  -[source,clojure]
  -----
  -(defn ranged-rand   ;; BROKEN!
  -  "Returns random integer in range start <= rand < end"
  -  [start end]
  -  (+ start (rand-int (- start end))))
  -----
  -
  -This error will still create random integers, just not in the expected range. Our `:fn` spec will detect the problem on use though:
  -
  -[source,clojure]
  -----
  -Call to  #'spec.examples.guide/ranged-rand did not conform to spec:
  -val: {:args {:start 5, :end 8}, :ret 3} fails at: [:fn] predicate: (>= (:ret %) (-> % :args :start))
  -:clojure.spec/args  (5 8)
  -----
  -
  -We can see that we asked for a random number in the range 5 to 8 but got back 3! Good thing we had a spec to catch that bug.
  -
  -Instrumentation of spec'ed functions can also be turned on more widely using `instrument-ns` or `instrument-all` functions. Instrumentation can be turned off using the complementary functions `unstrument`, `unstrument-ns`, and `unstrument-all`. It's up to you when to use instrumentation and how much. You may want a lot of instrumentation when working at the REPL and little at runtime. It's even possible to create more than one version of a function spec - an intensive one that runs during development and a lighter check that happens at runtime.
  +Instrumentation of spec'ed functions can also be turned on more widely using `instrument-ns` or `instrument-all` functions. Instrumentation can be turned off using the complementary functions `unstrument`, `unstrument-ns`, and `unstrument-all`. It's up to you when to use instrumentation and how much. You may want a lot of instrumentation when working at the REPL and little at runtime. 
  +
  +Instrumentation only checks the `:args` spec on a function, catching invalid calls external to the function. To validate that the function actually works as intended, you should test your function using the additional tools in `clojure.spec.test`. More on that after we talk about generators!
  +
  +the `:ret` and `:fn` specs is valid to catch invalid calls to a function.
   
   == Higher order functions
   
  
positive.code: 
  [source,clojure]
  ----
  (gen/generate (s/gen (s/and integer? even?)))
  ;;=> -15161796
  ----
  
  
negative.code: (s/def ::hand (s/* ::card))
  
  (s/def ::name string?)
  (s/def ::score int?)
  (s/def ::player (s/keys :req [::name ::score ::hand]))
  
  (s/def ::players (s/* ::player))
  