summaryrefslogtreecommitdiff
path: root/Haskell-book/15/optional/src/Optional.hs
blob: d85d8a5741864437df610ab3847fa24fb6f212be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
module Optional where

data Optional a =
    Nada
  | Only a
  deriving (Eq, Show)

instance Monoid a => Monoid (Optional a) where
    mempty = Nada
    mappend x Nada = x
    mappend Nada x = x
    mappend (Only x) (Only y) = Only (mappend x y)