diff options
author | Konrad Hinsen <konrad.hinsen@laposte.net> | 2009-03-18 09:16:30 +0000 |
---|---|---|
committer | Konrad Hinsen <konrad.hinsen@laposte.net> | 2009-03-18 09:16:30 +0000 |
commit | 334ad56890518ddd27c1327a25c91f8db873e417 (patch) | |
tree | a38f17f40b553de7ffc608928c7a9b2f5203b1b8 /src/clojure/contrib/types | |
parent | 832224974863b538b509715607c24a38a236554f (diff) |
generic: new module functor
Diffstat (limited to 'src/clojure/contrib/types')
-rw-r--r-- | src/clojure/contrib/types/examples.clj | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/clojure/contrib/types/examples.clj b/src/clojure/contrib/types/examples.clj index 214f7e1c..8c56b1c5 100644 --- a/src/clojure/contrib/types/examples.clj +++ b/src/clojure/contrib/types/examples.clj @@ -9,7 +9,8 @@ (ns clojure.contrib.types.examples (:use [clojure.contrib.types :only (deftype defadt match)]) - (:require [clojure.contrib.generic.collection :as gc])) + (:require [clojure.contrib.generic.collection :as gc]) + (:require [clojure.contrib.generic.functor :as gf])) ; ; Multisets implemented as maps to integers @@ -74,15 +75,15 @@ (depth empty-tree) (depth a-tree) -; Algebraic data types with multimethods: map on a tree -(defmethod gc/map ::tree +; Algebraic data types with multimethods: fmap on a tree +(defmethod gf/fmap ::tree [f t] (match t empty-tree empty-tree (leaf v) (leaf (f v)) - (node l r) (node (gc/map f l) (gc/map f r)))) + (node l r) (node (gf/fmap f l) (gf/fmap f r)))) -(gc/map str a-tree) +(gf/fmap str a-tree) ; ; Nonsense examples to illustrate all the features of match |