Foldable instance
authorJoachim Breitner <mail@joachim-breitner.de>
Sun, 8 Feb 2009 20:42:32 +0000 (21:42 +0100)
committerJoachim Breitner <mail@joachim-breitner.de>
Sun, 8 Feb 2009 20:42:32 +0000 (21:42 +0100)
src/Lseed/Data.hs

index eeb1d15..b16cb8b 100644 (file)
@@ -1,6 +1,9 @@
 -- | Data definitions for L-seed
 module Lseed.Data where 
 
+import Data.Foldable (Foldable, fold)
+import Data.Monoid
+
 -- | A list of plants, together with their position in the garden, in the interval [0,1]
 type Garden a = [ Planted a ]
 
@@ -35,5 +38,10 @@ instance Functor Plant where
        fmap f (Stipe x len p1) = Stipe (f x) len (fmap f p1)
        fmap f (Fork x angle p1 p2) = Fork (f x) angle (fmap f p1) (fmap f p2)
 
+instance Foldable Plant where
+       fold (Bud x) = x
+       fold (Stipe x len p1) = x `mappend` fold p1
+       fold (Fork x angle p1 p2) = x `mappend` fold p1 `mappend` fold p2
+
 instance Functor Planted where
        fmap f planted = planted { phenotype = fmap f (phenotype planted) }