type-combinators-0.2.4.3: A collection of data types for type-level programming

CopyrightCopyright (C) 2015 Kyle Carter
LicenseBSD3
MaintainerKyle Carter <kylcarte@indiana.edu>
Stabilityexperimental
PortabilityRankNTypes
Safe HaskellNone
LanguageHaskell2010

Data.Type.Combinator

Description

A collection of simple type combinators, such as Identity I, Constant C, Compose '(:.:)', Currying/Uncurrying, etc.

Documentation

data Comp1 f g :: k -> m -> * where Source #

Constructors

Comp1 :: {..} -> Comp1 f g h a 

Fields

Instances

(Functor1 m l f, Functor1 l k g) => Functor1 m k (Comp1 (k -> *) m (l -> *) f g) Source # 

Methods

map1 :: (forall a. f a -> g a) -> t f b -> t g b Source #

newtype (f :.: g) a Source #

Constructors

Comp 

Fields

Instances

Witness p q (f (g a)) => Witness p q ((:.:) k l f g a) Source # 

Associated Types

type WitnessC (p :: Constraint) (q :: Constraint) ((:.:) k l f g a) :: Constraint Source #

Methods

(\\) :: p => (q -> r) -> (k :.: l) f g a -> r Source #

TestEquality l1 f => TestEquality1 l (l -> l1) ((:.:) l l1 f) Source # 

Methods

testEquality1 :: f a c -> f b c -> Maybe ((k :~: a) b) Source #

TestEquality l f => TestEquality k ((:.:) k l f g) Source # 

Methods

testEquality :: f a -> f b -> Maybe (((k :.: l) f g :~: a) b) #

Show1 l f => Show1 k ((:.:) k l f g) Source # 

Methods

showsPrec1 :: Int -> f a -> ShowS Source #

show1 :: f a -> String Source #

Ord1 l f => Ord1 k ((:.:) k l f g) Source # 

Methods

compare1 :: f a -> f a -> Ordering Source #

(<#) :: f a -> f a -> Bool Source #

(>#) :: f a -> f a -> Bool Source #

(<=#) :: f a -> f a -> Bool Source #

(>=#) :: f a -> f a -> Bool Source #

Eq1 l f => Eq1 k ((:.:) k l f g) Source # 

Methods

eq1 :: f a -> f a -> Bool Source #

neq1 :: f a -> f a -> Bool Source #

Eq (f (g a)) => Eq ((:.:) k l f g a) Source # 

Methods

(==) :: (k :.: l) f g a -> (k :.: l) f g a -> Bool #

(/=) :: (k :.: l) f g a -> (k :.: l) f g a -> Bool #

Ord (f (g a)) => Ord ((:.:) k l f g a) Source # 

Methods

compare :: (k :.: l) f g a -> (k :.: l) f g a -> Ordering #

(<) :: (k :.: l) f g a -> (k :.: l) f g a -> Bool #

(<=) :: (k :.: l) f g a -> (k :.: l) f g a -> Bool #

(>) :: (k :.: l) f g a -> (k :.: l) f g a -> Bool #

(>=) :: (k :.: l) f g a -> (k :.: l) f g a -> Bool #

max :: (k :.: l) f g a -> (k :.: l) f g a -> (k :.: l) f g a #

min :: (k :.: l) f g a -> (k :.: l) f g a -> (k :.: l) f g a #

Read (f (g a)) => Read ((:.:) k l f g a) Source # 

Methods

readsPrec :: Int -> ReadS ((k :.: l) f g a) #

readList :: ReadS [(k :.: l) f g a] #

readPrec :: ReadPrec ((k :.: l) f g a) #

readListPrec :: ReadPrec [(k :.: l) f g a] #

Show (f (g a)) => Show ((:.:) k l f g a) Source # 

Methods

showsPrec :: Int -> (k :.: l) f g a -> ShowS #

show :: (k :.: l) f g a -> String #

showList :: [(k :.: l) f g a] -> ShowS #

type WitnessC p q ((:.:) k l f g a) Source # 
type WitnessC p q ((:.:) k l f g a) = Witness p q (f (g a))

newtype I a Source #

Constructors

I 

Fields

Instances

Monad I Source # 

Methods

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

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

return :: a -> I a #

fail :: String -> I a #

Functor I Source # 

Methods

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

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

Applicative I Source # 

Methods

pure :: a -> I a #

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

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

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

Foldable I Source # 

Methods

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

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

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

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

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

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

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

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

toList :: I a -> [a] #

null :: I a -> Bool #

length :: I a -> Int #

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

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

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

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

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

Traversable I Source # 

Methods

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

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

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

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

Witness p q a => Witness p q (I a) Source # 

Associated Types

type WitnessC (p :: Constraint) (q :: Constraint) (I a) :: Constraint Source #

Methods

(\\) :: p => (q -> r) -> I a -> r Source #

Eq a => Eq (I a) Source # 

Methods

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

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

Num a => Num (I a) Source # 

Methods

(+) :: I a -> I a -> I a #

(-) :: I a -> I a -> I a #

(*) :: I a -> I a -> I a #

negate :: I a -> I a #

abs :: I a -> I a #

signum :: I a -> I a #

fromInteger :: Integer -> I a #

Ord a => Ord (I a) Source # 

Methods

compare :: I a -> I a -> Ordering #

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

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

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

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

max :: I a -> I a -> I a #

min :: I a -> I a -> I a #

Show a => Show (I a) Source # 

Methods

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

show :: I a -> String #

showList :: [I a] -> ShowS #

type WitnessC p q (I a) Source # 
type WitnessC p q (I a) = Witness p q a

newtype C r a Source #

Constructors

C 

Fields

Instances

Witness p q r => Witness p q (C k r a) Source # 

Associated Types

type WitnessC (p :: Constraint) (q :: Constraint) (C k r a) :: Constraint Source #

Methods

(\\) :: p => (q -> r) -> C k r a -> r Source #

Read r => Read1 k (C k r) Source # 

Methods

readsPrec1 :: Int -> ReadS (Some (C k r) f) Source #

Show r => Show1 k (C k r) Source # 

Methods

showsPrec1 :: Int -> f a -> ShowS Source #

show1 :: f a -> String Source #

Ord r => Ord1 k (C k r) Source # 

Methods

compare1 :: f a -> f a -> Ordering Source #

(<#) :: f a -> f a -> Bool Source #

(>#) :: f a -> f a -> Bool Source #

(<=#) :: f a -> f a -> Bool Source #

(>=#) :: f a -> f a -> Bool Source #

Eq r => Eq1 k (C k r) Source # 

Methods

eq1 :: f a -> f a -> Bool Source #

neq1 :: f a -> f a -> Bool Source #

Functor (C * r) Source # 

Methods

fmap :: (a -> b) -> C * r a -> C * r b #

(<$) :: a -> C * r b -> C * r a #

Foldable (C * r) Source # 

Methods

fold :: Monoid m => C * r m -> m #

foldMap :: Monoid m => (a -> m) -> C * r a -> m #

foldr :: (a -> b -> b) -> b -> C * r a -> b #

foldr' :: (a -> b -> b) -> b -> C * r a -> b #

foldl :: (b -> a -> b) -> b -> C * r a -> b #

foldl' :: (b -> a -> b) -> b -> C * r a -> b #

foldr1 :: (a -> a -> a) -> C * r a -> a #

foldl1 :: (a -> a -> a) -> C * r a -> a #

toList :: C * r a -> [a] #

null :: C * r a -> Bool #

length :: C * r a -> Int #

elem :: Eq a => a -> C * r a -> Bool #

maximum :: Ord a => C * r a -> a #

minimum :: Ord a => C * r a -> a #

sum :: Num a => C * r a -> a #

product :: Num a => C * r a -> a #

Traversable (C * r) Source # 

Methods

traverse :: Applicative f => (a -> f b) -> C * r a -> f (C * r b) #

sequenceA :: Applicative f => C * r (f a) -> f (C * r a) #

mapM :: Monad m => (a -> m b) -> C * r a -> m (C * r b) #

sequence :: Monad m => C * r (m a) -> m (C * r a) #

Eq r => Eq (C k r a) Source # 

Methods

(==) :: C k r a -> C k r a -> Bool #

(/=) :: C k r a -> C k r a -> Bool #

Num r => Num (C k r a) Source # 

Methods

(+) :: C k r a -> C k r a -> C k r a #

(-) :: C k r a -> C k r a -> C k r a #

(*) :: C k r a -> C k r a -> C k r a #

negate :: C k r a -> C k r a #

abs :: C k r a -> C k r a #

signum :: C k r a -> C k r a #

fromInteger :: Integer -> C k r a #

Ord r => Ord (C k r a) Source # 

Methods

compare :: C k r a -> C k r a -> Ordering #

(<) :: C k r a -> C k r a -> Bool #

(<=) :: C k r a -> C k r a -> Bool #

(>) :: C k r a -> C k r a -> Bool #

(>=) :: C k r a -> C k r a -> Bool #

max :: C k r a -> C k r a -> C k r a #

min :: C k r a -> C k r a -> C k r a #

Read r => Read (C k r a) Source # 

Methods

readsPrec :: Int -> ReadS (C k r a) #

readList :: ReadS [C k r a] #

readPrec :: ReadPrec (C k r a) #

readListPrec :: ReadPrec [C k r a] #

Show r => Show (C k r a) Source # 

Methods

showsPrec :: Int -> C k r a -> ShowS #

show :: C k r a -> String #

showList :: [C k r a] -> ShowS #

type WitnessC p q (C k r a) Source # 
type WitnessC p q (C k r a) = Witness p q r

mapC :: (r -> s) -> C r a -> C s b Source #

newtype Flip p b a Source #

Constructors

Flip 

Fields

Instances

Witness p q (f a b) => Witness p q (Flip k k1 f b a) Source # 

Associated Types

type WitnessC (p :: Constraint) (q :: Constraint) (Flip k k1 f b a) :: Constraint Source #

Methods

(\\) :: p => (q -> r) -> Flip k k1 f b a -> r Source #

TestEquality1 k1 k p => TestEquality k (Flip k k1 p b) Source # 

Methods

testEquality :: f a -> f b -> Maybe ((Flip k k1 p b :~: a) b) #

Known k1 (p a) b => Known k (Flip k k1 p b) a Source # 

Associated Types

type KnownC (Flip k k1 p b) (a :: Flip k k1 p b -> *) (a :: Flip k k1 p b) :: Constraint Source #

Methods

known :: a a Source #

Eq (p a b) => Eq (Flip k k1 p b a) Source # 

Methods

(==) :: Flip k k1 p b a -> Flip k k1 p b a -> Bool #

(/=) :: Flip k k1 p b a -> Flip k k1 p b a -> Bool #

Ord (p a b) => Ord (Flip k k1 p b a) Source # 

Methods

compare :: Flip k k1 p b a -> Flip k k1 p b a -> Ordering #

(<) :: Flip k k1 p b a -> Flip k k1 p b a -> Bool #

(<=) :: Flip k k1 p b a -> Flip k k1 p b a -> Bool #

(>) :: Flip k k1 p b a -> Flip k k1 p b a -> Bool #

(>=) :: Flip k k1 p b a -> Flip k k1 p b a -> Bool #

max :: Flip k k1 p b a -> Flip k k1 p b a -> Flip k k1 p b a #

min :: Flip k k1 p b a -> Flip k k1 p b a -> Flip k k1 p b a #

Read (p a b) => Read (Flip k k1 p b a) Source # 

Methods

readsPrec :: Int -> ReadS (Flip k k1 p b a) #

readList :: ReadS [Flip k k1 p b a] #

readPrec :: ReadPrec (Flip k k1 p b a) #

readListPrec :: ReadPrec [Flip k k1 p b a] #

Show (p a b) => Show (Flip k k1 p b a) Source # 

Methods

showsPrec :: Int -> Flip k k1 p b a -> ShowS #

show :: Flip k k1 p b a -> String #

showList :: [Flip k k1 p b a] -> ShowS #

type WitnessC p q (Flip k k1 f b a) Source # 
type WitnessC p q (Flip k k1 f b a) = Witness p q (f a b)
type KnownC k (Flip k k1 p b) a Source # 
type KnownC k (Flip k k1 p b) a = Known k1 (p a) b

flipTestEquality1 :: TestEquality (p c) => Flip p a c -> Flip p b c -> Maybe (a :~: b) Source #

mapFlip :: (f a b -> g c d) -> Flip f b a -> Flip g d c Source #

newtype Cur p a b Source #

Constructors

Cur 

Fields

Instances

Witness q r (p ((#) k l a b)) => Witness q r (Cur k l p a b) Source # 

Associated Types

type WitnessC (q :: Constraint) (r :: Constraint) (Cur k l p a b) :: Constraint Source #

Methods

(\\) :: q => (r -> r) -> Cur k l p a b -> r Source #

Known (k1, k) p ((#) k1 k a b) => Known k (Cur k1 k p a) b Source # 

Associated Types

type KnownC (Cur k1 k p a) (b :: Cur k1 k p a -> *) (a :: Cur k1 k p a) :: Constraint Source #

Methods

known :: b a Source #

Eq (p ((#) k l a b)) => Eq (Cur k l p a b) Source # 

Methods

(==) :: Cur k l p a b -> Cur k l p a b -> Bool #

(/=) :: Cur k l p a b -> Cur k l p a b -> Bool #

Ord (p ((#) k l a b)) => Ord (Cur k l p a b) Source # 

Methods

compare :: Cur k l p a b -> Cur k l p a b -> Ordering #

(<) :: Cur k l p a b -> Cur k l p a b -> Bool #

(<=) :: Cur k l p a b -> Cur k l p a b -> Bool #

(>) :: Cur k l p a b -> Cur k l p a b -> Bool #

(>=) :: Cur k l p a b -> Cur k l p a b -> Bool #

max :: Cur k l p a b -> Cur k l p a b -> Cur k l p a b #

min :: Cur k l p a b -> Cur k l p a b -> Cur k l p a b #

Read (p ((#) k l a b)) => Read (Cur k l p a b) Source # 

Methods

readsPrec :: Int -> ReadS (Cur k l p a b) #

readList :: ReadS [Cur k l p a b] #

readPrec :: ReadPrec (Cur k l p a b) #

readListPrec :: ReadPrec [Cur k l p a b] #

Show (p ((#) k l a b)) => Show (Cur k l p a b) Source # 

Methods

showsPrec :: Int -> Cur k l p a b -> ShowS #

show :: Cur k l p a b -> String #

showList :: [Cur k l p a b] -> ShowS #

type WitnessC q r (Cur k l p a b) Source # 
type WitnessC q r (Cur k l p a b) = Witness q r (p ((#) k l a b))
type KnownC k (Cur k1 k p a) b Source # 
type KnownC k (Cur k1 k p a) b = Known (k1, k) p ((#) k1 k a b)

mapCur :: (p '(a, b) -> q '(c, d)) -> Cur p a b -> Cur q c d Source #

data Uncur p :: (k, l) -> * where Source #

Constructors

Uncur :: {..} -> Uncur p (a # b) 

Fields

Instances

(Witness r s (p a b), (~) (k, l) q ((#) k l a b)) => Witness r s (Uncur l k p q) Source # 

Associated Types

type WitnessC (r :: Constraint) (s :: Constraint) (Uncur l k p q) :: Constraint Source #

Methods

(\\) :: r => (s -> r) -> Uncur l k p q -> r Source #

Read2 l k p => Read1 (k, l) (Uncur l k p) Source # 

Methods

readsPrec1 :: Int -> ReadS (Some (Uncur l k p) f) Source #

(Known l (p a) b, (~) (k, l) q ((#) k l a b)) => Known (k, l) (Uncur l k p) q Source # 

Associated Types

type KnownC (Uncur l k p) (q :: Uncur l k p -> *) (a :: Uncur l k p) :: Constraint Source #

Methods

known :: q a Source #

Eq (p (Fst k l x) (Snd k l x)) => Eq (Uncur l k p x) Source # 

Methods

(==) :: Uncur l k p x -> Uncur l k p x -> Bool #

(/=) :: Uncur l k p x -> Uncur l k p x -> Bool #

Ord (p (Fst k l x) (Snd k l x)) => Ord (Uncur l k p x) Source # 

Methods

compare :: Uncur l k p x -> Uncur l k p x -> Ordering #

(<) :: Uncur l k p x -> Uncur l k p x -> Bool #

(<=) :: Uncur l k p x -> Uncur l k p x -> Bool #

(>) :: Uncur l k p x -> Uncur l k p x -> Bool #

(>=) :: Uncur l k p x -> Uncur l k p x -> Bool #

max :: Uncur l k p x -> Uncur l k p x -> Uncur l k p x #

min :: Uncur l k p x -> Uncur l k p x -> Uncur l k p x #

((~) (k, l) x ((#) k l a b), Read (p a b)) => Read (Uncur l k p x) Source # 

Methods

readsPrec :: Int -> ReadS (Uncur l k p x) #

readList :: ReadS [Uncur l k p x] #

readPrec :: ReadPrec (Uncur l k p x) #

readListPrec :: ReadPrec [Uncur l k p x] #

Show (p (Fst k l x) (Snd k l x)) => Show (Uncur l k p x) Source # 

Methods

showsPrec :: Int -> Uncur l k p x -> ShowS #

show :: Uncur l k p x -> String #

showList :: [Uncur l k p x] -> ShowS #

type WitnessC r s (Uncur l k p q) Source # 
type WitnessC r s (Uncur l k p q) = Witness r s (p (Fst k l q) (Snd k l q))
type KnownC (k, l) (Uncur l k p) q Source # 
type KnownC (k, l) (Uncur l k p) q = Known l (p (Fst k l q)) (Snd k l q)

mapUncur :: (p (Fst a) (Snd a) -> q b c) -> Uncur p a -> Uncur q '(b, c) Source #

newtype Cur3 p a b c Source #

Constructors

Cur3 

Fields

Instances

Witness q r (p ((,,) k l m a b c)) => Witness q r (Cur3 k l m p a b c) Source # 

Associated Types

type WitnessC (q :: Constraint) (r :: Constraint) (Cur3 k l m p a b c) :: Constraint Source #

Methods

(\\) :: q => (r -> r) -> Cur3 k l m p a b c -> r Source #

Known (k1, l, k) p ((,,) k1 l k a b c) => Known k (Cur3 k1 l k p a b) c Source # 

Associated Types

type KnownC (Cur3 k1 l k p a b) (c :: Cur3 k1 l k p a b -> *) (a :: Cur3 k1 l k p a b) :: Constraint Source #

Methods

known :: c a Source #

Eq (p ((,,) k l m a b c)) => Eq (Cur3 k l m p a b c) Source # 

Methods

(==) :: Cur3 k l m p a b c -> Cur3 k l m p a b c -> Bool #

(/=) :: Cur3 k l m p a b c -> Cur3 k l m p a b c -> Bool #

Ord (p ((,,) k l m a b c)) => Ord (Cur3 k l m p a b c) Source # 

Methods

compare :: Cur3 k l m p a b c -> Cur3 k l m p a b c -> Ordering #

(<) :: Cur3 k l m p a b c -> Cur3 k l m p a b c -> Bool #

(<=) :: Cur3 k l m p a b c -> Cur3 k l m p a b c -> Bool #

(>) :: Cur3 k l m p a b c -> Cur3 k l m p a b c -> Bool #

(>=) :: Cur3 k l m p a b c -> Cur3 k l m p a b c -> Bool #

max :: Cur3 k l m p a b c -> Cur3 k l m p a b c -> Cur3 k l m p a b c #

min :: Cur3 k l m p a b c -> Cur3 k l m p a b c -> Cur3 k l m p a b c #

Read (p ((,,) k l m a b c)) => Read (Cur3 k l m p a b c) Source # 

Methods

readsPrec :: Int -> ReadS (Cur3 k l m p a b c) #

readList :: ReadS [Cur3 k l m p a b c] #

readPrec :: ReadPrec (Cur3 k l m p a b c) #

readListPrec :: ReadPrec [Cur3 k l m p a b c] #

Show (p ((,,) k l m a b c)) => Show (Cur3 k l m p a b c) Source # 

Methods

showsPrec :: Int -> Cur3 k l m p a b c -> ShowS #

show :: Cur3 k l m p a b c -> String #

showList :: [Cur3 k l m p a b c] -> ShowS #

type WitnessC q r (Cur3 k l m p a b c) Source # 
type WitnessC q r (Cur3 k l m p a b c) = Witness q r (p ((,,) k l m a b c))
type KnownC k (Cur3 k1 l k p a b) c Source # 
type KnownC k (Cur3 k1 l k p a b) c = Known (k1, l, k) p ((,,) k1 l k a b c)

mapCur3 :: (p '(a, b, c) -> q '(d, e, f)) -> Cur3 p a b c -> Cur3 q d e f Source #

data Uncur3 p :: (k, l, m) -> * where Source #

Constructors

Uncur3 :: {..} -> Uncur3 p '(a, b, c) 

Fields

Instances

(Witness r s (p a b c), (~) (k, l, m) q ((,,) k l m a b c)) => Witness r s (Uncur3 m l k p q) Source # 

Associated Types

type WitnessC (r :: Constraint) (s :: Constraint) (Uncur3 m l k p q) :: Constraint Source #

Methods

(\\) :: r => (s -> r) -> Uncur3 m l k p q -> r Source #

Read3 m l k p => Read1 (k, l, m) (Uncur3 m l k p) Source # 

Methods

readsPrec1 :: Int -> ReadS (Some (Uncur3 m l k p) f) Source #

(Known m (p a b) c, (~) (k, l, m) q ((,,) k l m a b c)) => Known (k, l, m) (Uncur3 m l k p) q Source # 

Associated Types

type KnownC (Uncur3 m l k p) (q :: Uncur3 m l k p -> *) (a :: Uncur3 m l k p) :: Constraint Source #

Methods

known :: q a Source #

Eq (p (Fst3 k l m x) (Snd3 k l m x) (Thd3 k l m x)) => Eq (Uncur3 m l k p x) Source # 

Methods

(==) :: Uncur3 m l k p x -> Uncur3 m l k p x -> Bool #

(/=) :: Uncur3 m l k p x -> Uncur3 m l k p x -> Bool #

Ord (p (Fst3 k l m x) (Snd3 k l m x) (Thd3 k l m x)) => Ord (Uncur3 m l k p x) Source # 

Methods

compare :: Uncur3 m l k p x -> Uncur3 m l k p x -> Ordering #

(<) :: Uncur3 m l k p x -> Uncur3 m l k p x -> Bool #

(<=) :: Uncur3 m l k p x -> Uncur3 m l k p x -> Bool #

(>) :: Uncur3 m l k p x -> Uncur3 m l k p x -> Bool #

(>=) :: Uncur3 m l k p x -> Uncur3 m l k p x -> Bool #

max :: Uncur3 m l k p x -> Uncur3 m l k p x -> Uncur3 m l k p x #

min :: Uncur3 m l k p x -> Uncur3 m l k p x -> Uncur3 m l k p x #

((~) (k, l, m) x ((,,) k l m a b c), Read (p a b c)) => Read (Uncur3 m l k p x) Source # 

Methods

readsPrec :: Int -> ReadS (Uncur3 m l k p x) #

readList :: ReadS [Uncur3 m l k p x] #

readPrec :: ReadPrec (Uncur3 m l k p x) #

readListPrec :: ReadPrec [Uncur3 m l k p x] #

Show (p (Fst3 k l m x) (Snd3 k l m x) (Thd3 k l m x)) => Show (Uncur3 m l k p x) Source # 

Methods

showsPrec :: Int -> Uncur3 m l k p x -> ShowS #

show :: Uncur3 m l k p x -> String #

showList :: [Uncur3 m l k p x] -> ShowS #

type WitnessC r s (Uncur3 m l k p q) Source # 
type WitnessC r s (Uncur3 m l k p q) = Witness r s (p (Fst3 k l m q) (Snd3 k l m q) (Thd3 k l m q))
type KnownC (k, l, m) (Uncur3 m l k p) q Source # 
type KnownC (k, l, m) (Uncur3 m l k p) q = Known m (p (Fst3 k l m q) (Snd3 k l m q)) (Thd3 k l m q)

mapUncur3 :: (p (Fst3 x) (Snd3 x) (Thd3 x) -> q d e f) -> Uncur3 p x -> Uncur3 q '(d, e, f) Source #

newtype Join f a Source #

Constructors

Join 

Fields

Instances

Witness p q (f a a) => Witness p q (Join k f a) Source # 

Associated Types

type WitnessC (p :: Constraint) (q :: Constraint) (Join k f a) :: Constraint Source #

Methods

(\\) :: p => (q -> r) -> Join k f a -> r Source #

Show2 k k f => Show1 k (Join k f) Source # 

Methods

showsPrec1 :: Int -> f a -> ShowS Source #

show1 :: f a -> String Source #

Ord2 k k f => Ord1 k (Join k f) Source # 

Methods

compare1 :: f a -> f a -> Ordering Source #

(<#) :: f a -> f a -> Bool Source #

(>#) :: f a -> f a -> Bool Source #

(<=#) :: f a -> f a -> Bool Source #

(>=#) :: f a -> f a -> Bool Source #

Eq2 k k f => Eq1 k (Join k f) Source # 

Methods

eq1 :: f a -> f a -> Bool Source #

neq1 :: f a -> f a -> Bool Source #

Known k (f a) a => Known k (Join k f) a Source # 

Associated Types

type KnownC (Join k f) (a :: Join k f -> *) (a :: Join k f) :: Constraint Source #

Methods

known :: a a Source #

Eq (f a a) => Eq (Join k f a) Source # 

Methods

(==) :: Join k f a -> Join k f a -> Bool #

(/=) :: Join k f a -> Join k f a -> Bool #

Ord (f a a) => Ord (Join k f a) Source # 

Methods

compare :: Join k f a -> Join k f a -> Ordering #

(<) :: Join k f a -> Join k f a -> Bool #

(<=) :: Join k f a -> Join k f a -> Bool #

(>) :: Join k f a -> Join k f a -> Bool #

(>=) :: Join k f a -> Join k f a -> Bool #

max :: Join k f a -> Join k f a -> Join k f a #

min :: Join k f a -> Join k f a -> Join k f a #

Read (f a a) => Read (Join k f a) Source # 

Methods

readsPrec :: Int -> ReadS (Join k f a) #

readList :: ReadS [Join k f a] #

readPrec :: ReadPrec (Join k f a) #

readListPrec :: ReadPrec [Join k f a] #

Show (f a a) => Show (Join k f a) Source # 

Methods

showsPrec :: Int -> Join k f a -> ShowS #

show :: Join k f a -> String #

showList :: [Join k f a] -> ShowS #

type WitnessC p q (Join k f a) Source # 
type WitnessC p q (Join k f a) = Witness p q (f a a)
type KnownC k (Join k f) a Source # 
type KnownC k (Join k f) a = Known k (f a) a

mapJoin :: (f a a -> g b b) -> Join f a -> Join g b Source #

data Conj t f :: l -> m -> * where Source #

Constructors

Conj :: t (Flip f b) a -> Conj t f a b 

data LL c :: l -> (l -> k) -> * where Source #

Constructors

LL :: {..} -> LL c a f 

Fields

data RR c :: (l -> k) -> l -> * where Source #

Constructors

RR :: {..} -> RR c f a 

Fields