Safe Haskell | None |
---|---|
Language | Haskell2010 |
Data.Profunctor.FinFn
Synopsis
- data FinFn a b
- makeFinFn :: forall (n :: Nat) a b. KnownNat n => (a -> Finite n) -> (Finite n -> b) -> FinFn a b
- withFinFn :: FinFn a b -> (forall (n :: Nat). KnownNat n => (a -> Finite n) -> (Finite n -> b) -> r) -> r
- applyFinFn :: FinFn a b -> a -> b
- (>>>>) :: FinFn a b -> FinFn b c -> FinFn a c
- (<<<<) :: FinFn b c -> FinFn a b -> FinFn a c
- fromMap :: Ord a => Map a b -> FinFn a (Maybe b)
Documentation
Instances
Cartesian FinFn Source # | |
Defined in Data.Profunctor.FinFn Methods proUnit :: FinFn a () Source # proProduct :: (a -> (a1, a2)) -> ((b1, b2) -> b) -> FinFn a1 b1 -> FinFn a2 b2 -> FinFn a b Source # (***) :: FinFn a b -> FinFn a' b' -> FinFn (a, a') (b, b') Source # (&&&) :: FinFn a b -> FinFn a b' -> FinFn a (b, b') Source # proPower :: forall (n :: Nat) a b. KnownNat n => FinFn a b -> FinFn (Finite n -> a) (Finite n -> b) Source # | |
Cocartesian FinFn Source # | |
Defined in Data.Profunctor.FinFn Methods proEmpty :: FinFn Void b Source # proSum :: (a -> Either a1 a2) -> (Either b1 b2 -> b) -> FinFn a1 b1 -> FinFn a2 b2 -> FinFn a b Source # (+++) :: FinFn a b -> FinFn a' b' -> FinFn (Either a a') (Either b b') Source # (|||) :: FinFn a b -> FinFn a' b -> FinFn (Either a a') b Source # proTimes :: forall (n :: Nat) a b. KnownNat n => FinFn a b -> FinFn (Finite n, a) (Finite n, b) Source # | |
Profunctor FinFn Source # | |
Defined in Data.Profunctor.FinFn Methods dimap :: (a -> b) -> (c -> d) -> FinFn b c -> FinFn a d # lmap :: (a -> b) -> FinFn b c -> FinFn a c # rmap :: (b -> c) -> FinFn a b -> FinFn a c # (#.) :: forall a b c q. Coercible c b => q b c -> FinFn a b -> FinFn a c # (.#) :: forall a b c q. Coercible b a => FinFn b c -> q a b -> FinFn a c # |
makeFinFn :: forall (n :: Nat) a b. KnownNat n => (a -> Finite n) -> (Finite n -> b) -> FinFn a b Source #
Safe construction
withFinFn :: FinFn a b -> (forall (n :: Nat). KnownNat n => (a -> Finite n) -> (Finite n -> b) -> r) -> r Source #
Safe pattern matching
applyFinFn :: FinFn a b -> a -> b Source #
How I would say... applyFinFn
is nice, functor-ish.
It commutes with Profunctor
, Cartesian
, Cocartesian
,
and composition (>>>>)
.