Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- newtype AnyMay a = AnyMay (Maybe a) deriving (Functor, Eq)
- newtype AllMay a = AllMay (Maybe a) deriving (Functor, Eq)
- newtype First a = First a deriving (Functor, Eq)
- newtype Last a = Last a deriving (Functor, Eq)
- instance Semigroup (First a) where
- (<>) = const
- instance Semigroup (Last a) where
- (<>) = const id
- instance Semigroup a => Semigroup (AnyMay a) where
- l <> AnyMay Nothing = l
- AnyMay Nothing <> r = r
- AnyMay (Just a) <> AnyMay (Just b) = AnyMay (Just (a <> b))
- instance Semigroup a => Semigroup (AllMay a) where
- _ <> AllMay Nothing = AllMay Nothing
- AllMay Nothing <> _ = AllMay Nothing
- AllMay (Just a) <> AllMay (Just b) = AllMay (Just (a <> b))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement