diff --git a/src/GoodList.hs b/src/GoodList.hs index 0db6ab1..127cd26 100644 --- a/src/GoodList.hs +++ b/src/GoodList.hs @@ -19,6 +19,13 @@ instance Applicative GoodList where (Singleton f) <*> x = fmap f x (Multiple a b c) <*> x = append (append (fmap a x) (b <*> x)) (fmap c x) +-- Needs to be proven +instance Monad GoodList where + return = pure + Empty >>= _ = Empty + Singleton x >>= f = f x + Multiple a b c >>= f = append (append (f a) (b >>= f)) (f c) + instance Semigroup (GoodList a) where (<>) = append