Skip to content

Instantly share code, notes, and snippets.

@MichaelDrogalis
Created January 7, 2013 00:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MichaelDrogalis/4471276 to your computer and use it in GitHub Desktop.
Save MichaelDrogalis/4471276 to your computer and use it in GitHub Desktop.
(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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment