Hi,

Am 21.10.2009 um 20:49 schrieb Shel:

> (defmulti area (fn [s m] [(:shape s) (:measure m)]))
> (defmethod area[:rectangle :side] [s m] (* (:side m) (:side m)))
> (defmethod area[:rectangle :sides] [s m] (* (:side1 m) (:side2 m)))
> (derive ::square ::rectangle)
> user=> (area {:shape :square} {:measure :side :side 2})

You have to use ::square and ::rectangle in the multimethod and the  
maps as you did in the derive.

(defmulti area (fn [s m] [(:shape s) (:measure m)]))
(defmethod area[::rectangle ::side] [s m] (* (:side m) (:side m)))
(defmethod area[::rectangle ::sides] [s m] (* (:side1 m) (:side2 m)))
(derive ::square ::rectangle)
(area {:shape ::square} {:measure ::side :side 2})

This should do the trick.

Sincerely
Meikel

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to