summaryrefslogtreecommitdiff
path: root/lec07/JoinList.hs
blob: d04a0c6f9f8ecc4f3fac6104d0ddac291980de0f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
module JoinList where

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 m _ = m
tag Append m _ _ = m

(+++) :: Monoid m => JoinList m a -> JoinList m a -> JoinList m a
(+++) jl1 jl2 = mappend jl1 jl2