Advertisement
Guest User

Untitled

a guest
Feb 13th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module MonoidSemigroup where
  2.  
  3. data Optional a =
  4.     Nada
  5.   | Only a
  6.   deriving (Eq, Show)
  7.  
  8. instance Semigroup a => Semigroup (Optional a) where
  9.   Only a <> Nada = Only a
  10.   Nada <> Only a = Only a
  11.   Only a <> Only b = Only (a <> b)
  12.  
  13. instance Semigroup a => Monoid (Optional a) where
  14.   mempty = Nada
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement