module Data.Loc.List.OneToTwo ( -- * Imports -- $imports -- * Type OneToTwo (..), -- * Tuple conversion toTuple, toTuple', ) where import Data.Loc.Internal.Prelude -- | List of length 1 or 2. data OneToTwo a = One a -- ^ List of length 1 | Two a a -- ^ List of length 2 deriving (Eq, Ord, Show, Read, Foldable, Functor) {- | >>> toTuple (One 1) (1,Nothing) >>> toTuple (Two 1 2) (1,Just 2) -} toTuple :: OneToTwo a -> (a, Maybe a) toTuple = \case One a -> (a, Nothing) Two a b -> (a, Just b) {- | >>> toTuple' (One 1) (Nothing,1) >>> toTuple' (Two 1 2) (Just 1,2) -} toTuple' :: OneToTwo a -> (Maybe a, a) toTuple' = \case One a -> (Nothing, a) Two a b -> (Just a, b) {- $imports Recommended import: > import Data.Loc.List.OneToTwo (OneToTwo) > import qualified Data.Loc.List.OneToTwo as OneToTwo -}