public
Created

  • Download Gist
gistfile1.clj
Clojure
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
(defprotocol Fly
(fly [this] "Method to fly"))
 
(defn bird-fly [this]
(str (:name this) " flies..."))
 
(with-precondition! #'bird-fly
:not-crow
(fn [this] (not= (:name this) "Crow")))
 
(defrecord Bird [name species]
Fly
(fly [this] (bird-fly this)))
 
(def crow (Bird. "Crow" "Corvus corax"))
(fly crow) ; => Raises an exception due to precondition violation.

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.