2016-05-13 08:49:19 +00:00
|
|
|
{- This file is part of Vervis.
|
|
|
|
-
|
2019-03-28 21:08:30 +00:00
|
|
|
- Written in 2016, 2019 by fr33domlover <fr33domlover@riseup.net>.
|
2016-05-13 08:49:19 +00:00
|
|
|
-
|
|
|
|
- ♡ Copying is an act of love. Please copy, reuse and share.
|
|
|
|
-
|
|
|
|
- The author(s) have dedicated all copyright and related and neighboring
|
|
|
|
- rights to this software to the public domain worldwide. This software is
|
|
|
|
- distributed without any warranty.
|
|
|
|
-
|
|
|
|
- You should have received a copy of the CC0 Public Domain Dedication along
|
|
|
|
- with this software. If not, see
|
|
|
|
- <http://creativecommons.org/publicdomain/zero/1.0/>.
|
|
|
|
-}
|
|
|
|
|
|
|
|
module Data.Either.Local
|
|
|
|
( maybeRight
|
|
|
|
, maybeLeft
|
2019-03-28 21:08:30 +00:00
|
|
|
, requireEither
|
2016-05-13 08:49:19 +00:00
|
|
|
)
|
|
|
|
where
|
|
|
|
|
|
|
|
import Prelude
|
|
|
|
|
|
|
|
maybeRight :: Either a b -> Maybe b
|
|
|
|
maybeRight (Left _) = Nothing
|
|
|
|
maybeRight (Right b) = Just b
|
|
|
|
|
|
|
|
maybeLeft :: Either a b -> Maybe a
|
|
|
|
maybeLeft (Left a) = Just a
|
|
|
|
maybeLeft (Right _) = Nothing
|
2019-03-28 21:08:30 +00:00
|
|
|
|
|
|
|
requireEither :: Maybe a -> Maybe b -> Either Bool (Either a b)
|
|
|
|
requireEither Nothing Nothing = Left False
|
|
|
|
requireEither (Just _) (Just _) = Left True
|
|
|
|
requireEither (Just x) Nothing = Right $ Left x
|
|
|
|
requireEither Nothing (Just y) = Right $ Right y
|