(extend-type t & specs)
A macro that expands into an extend call. Useful when you are supplying the definitions explicitly inline, extend-type automatically creates the maps required by extend. Propagates the class as a type hint on the first argument of all fns. (extend-type MyType Countable (cnt [c] ...) Foo (bar [x y] ...) (baz ([x] ...) ([x y & zs] ...))) expands into: (extend MyType Countable {:cnt (fn [c] ...)} Foo {:baz (fn ([x] ...) ([x y & zs] ...)) :bar (fn [x y] ...)})
;;; This is a library for the shopping result.
(defrecord Banana [qty])
;;; 'subtotal' differ from each fruit.
(defprotocol Fruit
(subtotal [item]))
(extend-type Banana
Fruit
(subtotal [item]
(* 158 (:qty item))))
;;; Please see the term of 'reify'.