1 {-# OPTIONS_GHC -Wall #-}
7 data JoinList m a = Empty
9 | Append m (JoinList m a) (JoinList m a)
13 tag :: Monoid m => JoinList m a -> m
16 tag (Append t _ _) = t
18 (+++) :: Monoid m => JoinList m a -> JoinList m a -> JoinList m a
21 alst1 +++ alst2 = Append ((tag alst1) `mappend` (tag alst2)) alst1 alst2