Last active
August 29, 2015 14:24
-
-
Save AdamFrey/206bb51d45a17819aded to your computer and use it in GitHub Desktop.
Multi-method non-redefine
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
user=> (defmulti even-or-odd (fn [n] (if (even? n) :odd :even))) | |
#'user/even-or-odd | |
user=> (defmethod even-or-odd :even [n] "even") | |
#object[clojure.lang.MultiFn 0x7fd6a23b "clojure.lang.MultiFn@7fd6a23b"] | |
user=> (defmethod even-or-odd :odd [n] "odd") | |
#object[clojure.lang.MultiFn 0x7fd6a23b "clojure.lang.MultiFn@7fd6a23b"] | |
user=> (even-or-odd 1) | |
"even" | |
user=> ;; oops, let's try again | |
user=> (defmulti even-or-odd (fn [n] (if (even? n) :even :odd))) | |
nil | |
user=> (even-or-odd 1) | |
"even" | |
user=> ;; hmm. that didn't work | |
user=> (def even-or-odd nil) | |
#'user/even-or-odd | |
user=> (defmulti even-or-odd (fn [n] (if (even? n) :even :odd))) | |
#'user/even-or-odd | |
user=> (defmethod even-or-odd :even [n] "even") | |
#<MultiFn clojure.lang.MultiFn@1e9b11c> | |
user=> (defmethod even-or-odd :odd [n] "odd") | |
#<MultiFn clojure.lang.MultiFn@1e9b11c> | |
user=> (even-or-odd 1) | |
"odd" | |
user=> ;; finally | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment