uniform-pair-0.1.13: Uniform pairs with class instances

Copyright(c) 2013 Tabula Inc.
Maintainerconal@conal.net
Stabilityexperimental
Safe HaskellSafe
LanguageHaskell98

Data.UniformPair

Description

Uniform pairs. Because these pairs memoize functions (from Bool)--i.e., they're representable functors--these instances provided are fully determined by the corresponding instances for functions, thanks to the type class morphism principle.

Synopsis

Documentation

data Pair a Source #

Uniform pairs

Constructors

a :# a infix 1 

Instances

Monad Pair Source # 

Methods

(>>=) :: Pair a -> (a -> Pair b) -> Pair b #

(>>) :: Pair a -> Pair b -> Pair b #

return :: a -> Pair a #

fail :: String -> Pair a #

Functor Pair Source # 

Methods

fmap :: (a -> b) -> Pair a -> Pair b #

(<$) :: a -> Pair b -> Pair a #

Applicative Pair Source # 

Methods

pure :: a -> Pair a #

(<*>) :: Pair (a -> b) -> Pair a -> Pair b #

(*>) :: Pair a -> Pair b -> Pair b #

(<*) :: Pair a -> Pair b -> Pair a #

Foldable Pair Source # 

Methods

fold :: Monoid m => Pair m -> m #

foldMap :: Monoid m => (a -> m) -> Pair a -> m #

foldr :: (a -> b -> b) -> b -> Pair a -> b #

foldr' :: (a -> b -> b) -> b -> Pair a -> b #

foldl :: (b -> a -> b) -> b -> Pair a -> b #

foldl' :: (b -> a -> b) -> b -> Pair a -> b #

foldr1 :: (a -> a -> a) -> Pair a -> a #

foldl1 :: (a -> a -> a) -> Pair a -> a #

toList :: Pair a -> [a] #

null :: Pair a -> Bool #

length :: Pair a -> Int #

elem :: Eq a => a -> Pair a -> Bool #

maximum :: Ord a => Pair a -> a #

minimum :: Ord a => Pair a -> a #

sum :: Num a => Pair a -> a #

product :: Num a => Pair a -> a #

Traversable Pair Source # 

Methods

traverse :: Applicative f => (a -> f b) -> Pair a -> f (Pair b) #

sequenceA :: Applicative f => Pair (f a) -> f (Pair a) #

mapM :: Monad m => (a -> m b) -> Pair a -> m (Pair b) #

sequence :: Monad m => Pair (m a) -> m (Pair a) #

Eq1 Pair Source # 

Methods

liftEq :: (a -> b -> Bool) -> Pair a -> Pair b -> Bool #

Ord1 Pair Source # 

Methods

liftCompare :: (a -> b -> Ordering) -> Pair a -> Pair b -> Ordering #

Show1 Pair Source # 

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> Pair a -> ShowS #

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [Pair a] -> ShowS #

Eq1 Pair Source # 

Methods

(==#) :: Eq a => Pair a -> Pair a -> Bool #

Ord1 Pair Source # 

Methods

compare1 :: Ord a => Pair a -> Pair a -> Ordering #

Show1 Pair Source # 

Methods

showsPrec1 :: Show a => Int -> Pair a -> ShowS #

showList1 :: Show a => [Pair a] -> ShowS #

Eq a => Eq (Pair a) Source # 

Methods

(==) :: Pair a -> Pair a -> Bool #

(/=) :: Pair a -> Pair a -> Bool #

Ord a => Ord (Pair a) Source # 

Methods

compare :: Pair a -> Pair a -> Ordering #

(<) :: Pair a -> Pair a -> Bool #

(<=) :: Pair a -> Pair a -> Bool #

(>) :: Pair a -> Pair a -> Bool #

(>=) :: Pair a -> Pair a -> Bool #

max :: Pair a -> Pair a -> Pair a #

min :: Pair a -> Pair a -> Pair a #

Show a => Show (Pair a) Source # 

Methods

showsPrec :: Int -> Pair a -> ShowS #

show :: Pair a -> String #

showList :: [Pair a] -> ShowS #

Semigroup a => Semigroup (Pair a) Source # 

Methods

(<>) :: Pair a -> Pair a -> Pair a #

sconcat :: NonEmpty (Pair a) -> Pair a #

stimes :: Integral b => b -> Pair a -> Pair a #

Monoid a => Monoid (Pair a) Source # 

Methods

mempty :: Pair a #

mappend :: Pair a -> Pair a -> Pair a #

mconcat :: [Pair a] -> Pair a #

NFData a => NFData (Pair a) Source # 

Methods

rnf :: Pair a -> () #

fstP :: Pair a -> a Source #

sndP :: Pair a -> a Source #

firstP :: (a -> a) -> Pair a -> Pair a Source #

secondP :: (a -> a) -> Pair a -> Pair a Source #

getP :: Bool -> Pair a -> a Source #

Extract an element, indexing by False for the first element and True for the second.

onElemP :: Bool -> (a -> a) -> Pair a -> Pair a Source #

Update a component, indexing by False for the first element and True for the second.

swapP :: Pair a -> Pair a Source #

Swap the elements of a Pair

compareSwap :: Ord a => Pair a -> Pair a Source #