Skip to content

Instantly share code, notes, and snippets.

@MarcelineVQ
Last active October 8, 2019 05:16
Show Gist options
  • Select an option

  • Save MarcelineVQ/13468b3cad3fbd280f753db15e920d77 to your computer and use it in GitHub Desktop.

Select an option

Save MarcelineVQ/13468b3cad3fbd280f753db15e920d77 to your computer and use it in GitHub Desktop.
-- fix 1
instance Monoid a => Semigroup (Optional a) where
(<>) = mappend
instance Monoid a => Monoid (Optional a) where
mempty = Nada
mappend Nada Nada = Nada
mappend (Only x) Nada = Only x
mappend Nada (Only x) = Only x
mappend (Only x) (Only y) = Only (x <> y)
-- or fix 2
instance Semigroup a => Semigroup (Optional a) where
Nada <> Nada = Nada
Only x <> Nada = Only x
Nada <> Only x = Only x
Only x <> Only y = Only (x <> y)
instance Monoid a => Monoid (Optional a) where
mempty = Nada
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment