hw7: exercise 1
authorRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Wed, 24 Dec 2014 14:24:10 +0000 (19:54 +0530)
committerRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Wed, 24 Dec 2014 14:24:10 +0000 (19:54 +0530)
hw7/JoinList.hs [new file with mode: 0644]

diff --git a/hw7/JoinList.hs b/hw7/JoinList.hs
new file mode 100644 (file)
index 0000000..4edc744
--- /dev/null
@@ -0,0 +1,22 @@
+{-# OPTIONS_GHC -Wall #-}
+module JoinList where
+
+import Data.Monoid
+
+
+data JoinList m a = Empty
+                  | Single m a
+                  | Append m (JoinList m a) (JoinList m a)
+                    deriving (Eq, Show)
+
+-- exercise 1
+tag :: Monoid m => JoinList m a -> m
+tag (Empty) = mempty
+tag (Single t _) = t
+tag (Append t _ _) = t
+
+(+++) :: Monoid m => JoinList m a -> JoinList m a -> JoinList m a
+Empty +++ x = x
+x +++ Empty = x
+alst1 +++ alst2 = Append ((tag alst1) `mappend` (tag alst2)) alst1 alst2
+