cartesian-profunctors
Safe HaskellNone
LanguageHaskell2010

Data.Profunctor.UniconEncoding

Synopsis

Documentation

data Unicon a Source #

Universal container. Any container type with finite maximum length and finite number of possible shapes can be encoded into Unicon.

Constructors

MkUnicon !Int !(Vector a) 

Instances

Instances details
Eq1 Unicon Source # 
Instance details

Defined in Data.Profunctor.UniconEncoding

Methods

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

Ord1 Unicon Source # 
Instance details

Defined in Data.Profunctor.UniconEncoding

Methods

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

Functor Unicon Source # 
Instance details

Defined in Data.Profunctor.UniconEncoding

Methods

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

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

Foldable Unicon Source # 
Instance details

Defined in Data.Profunctor.UniconEncoding

Methods

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

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

foldMap' :: Monoid m => (a -> m) -> Unicon a -> m #

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

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

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

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

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

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

toList :: Unicon a -> [a] #

null :: Unicon a -> Bool #

length :: Unicon a -> Int #

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

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

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

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

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

Traversable Unicon Source # 
Instance details

Defined in Data.Profunctor.UniconEncoding

Methods

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

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

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

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

Read a => Read (Unicon a) Source # 
Instance details

Defined in Data.Profunctor.UniconEncoding

Show a => Show (Unicon a) Source # 
Instance details

Defined in Data.Profunctor.UniconEncoding

Methods

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

show :: Unicon a -> String #

showList :: [Unicon a] -> ShowS #

Eq a => Eq (Unicon a) Source # 
Instance details

Defined in Data.Profunctor.UniconEncoding

Methods

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

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

Ord a => Ord (Unicon a) Source # 
Instance details

Defined in Data.Profunctor.UniconEncoding

Methods

compare :: Unicon a -> Unicon a -> Ordering #

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

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

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

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

max :: Unicon a -> Unicon a -> Unicon a #

min :: Unicon a -> Unicon a -> Unicon a #

data Builder a Source #

A lazy version of Unicon.

This type is meant to be abstract. Only thing you can do is to convert it into Unicon using build.

data Encoding a b s t Source #

Encoding into Unicon a with partial decoding function.

Constructors

Encoding Int (s -> Builder a) (Unicon b -> Maybe (t, Vector b)) 

Instances

Instances details
Cartesian (Encoding a b) Source # 
Instance details

Defined in Data.Profunctor.UniconEncoding

Methods

proUnit :: Encoding a b a0 () Source #

proProduct :: (a0 -> (a1, a2)) -> ((b1, b2) -> b0) -> Encoding a b a1 b1 -> Encoding a b a2 b2 -> Encoding a b a0 b0 Source #

(***) :: Encoding a b a0 b0 -> Encoding a b a' b' -> Encoding a b (a0, a') (b0, b') Source #

(&&&) :: Encoding a b a0 b0 -> Encoding a b a0 b' -> Encoding a b a0 (b0, b') Source #

proPower :: forall (n :: Nat) a0 b0. KnownNat n => Encoding a b a0 b0 -> Encoding a b (Finite n -> a0) (Finite n -> b0) Source #

Cocartesian (Encoding a b) Source # 
Instance details

Defined in Data.Profunctor.UniconEncoding

Methods

proEmpty :: Encoding a b Void b0 Source #

proSum :: (a0 -> Either a1 a2) -> (Either b1 b2 -> b0) -> Encoding a b a1 b1 -> Encoding a b a2 b2 -> Encoding a b a0 b0 Source #

(+++) :: Encoding a b a0 b0 -> Encoding a b a' b' -> Encoding a b (Either a0 a') (Either b0 b') Source #

(|||) :: Encoding a b a0 b0 -> Encoding a b a' b0 -> Encoding a b (Either a0 a') b0 Source #

proTimes :: forall (n :: Nat) a0 b0. KnownNat n => Encoding a b a0 b0 -> Encoding a b (Finite n, a0) (Finite n, b0) Source #

Profunctor (Encoding a b) Source # 
Instance details

Defined in Data.Profunctor.UniconEncoding

Methods

dimap :: (a0 -> b0) -> (c -> d) -> Encoding a b b0 c -> Encoding a b a0 d #

lmap :: (a0 -> b0) -> Encoding a b b0 c -> Encoding a b a0 c #

rmap :: (b0 -> c) -> Encoding a b a0 b0 -> Encoding a b a0 c #

(#.) :: forall a0 b0 c q. Coercible c b0 => q b0 c -> Encoding a b a0 b0 -> Encoding a b a0 c #

(.#) :: forall a0 b0 c q. Coercible b0 a0 => Encoding a b b0 c -> q a0 b0 -> Encoding a b a0 c #

Functor (Encoding a b s) Source # 
Instance details

Defined in Data.Profunctor.UniconEncoding

Methods

fmap :: (a0 -> b0) -> Encoding a b s a0 -> Encoding a b s b0 #

(<$) :: a0 -> Encoding a b s b0 -> Encoding a b s a0 #

encodeWith :: Encoding a b s t -> s -> Unicon a Source #

decodeWith :: Encoding a b s t -> Unicon b -> Maybe t Source #