@hackage / both

Like Maybe, but with a different Monoid instance.

Latest0.1.1.2

About

Metadata

  • Last updated , by barrucadu
  • License MIT
  • Maintained by: mike@barrucadu.co.uk

  • Lottery factor: 0

Links

Installation

Readme

The Monoid instance for Maybe behaves like so:

instance Monoid a => Monoid (Maybe a) where
  mappend (Just x) (Just y) = Just $ x <> y
  mappend (Just x) Nothing  = Just x
  mappend Nothing  (Just y) = Just y
  mappend Nothing  Nothing  = Nothing

  mempty = Nothing

Both is a newtype wrapper around Maybe providing this instance:

instance Monoid a => Monoid (Both a) where
  mappend (Just x) (Just y) = Just $ x <> y
  mappend _ _ = Nothing

  mempty = Just mempty