Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Deprecated: Use Fcf.Class.Functor or Fcf.Class.Bifunctor instead.
Overloaded functions.
Documentation
data Map (c :: a -> Exp b) (d :: f a) (e :: f b) Source #
Type-level fmap
for type-level functors.
Note: this name clashes with Map
from containers.
FMap
is provided as a synonym to avoid this.
Example
>>>
data Example where Ex :: a -> Example -- Hide the type of examples to avoid brittleness in different GHC versions
>>>
data AddMul :: Nat -> Nat -> Exp Nat
>>>
type instance Eval (AddMul x y) = (x TL.+ y) TL.* (x TL.+ y)
>>>
:kind! Ex (Eval (Map (AddMul 2) '[0, 1, 2, 3, 4]) :: [Nat])
Ex (Eval (Map (AddMul 2) '[0, 1, 2, 3, 4]) :: [Nat]) :: Example = Ex [4, 9, 16, 25, 36]
Instances
type Eval (Map f ('Just a3) :: Maybe a2 -> Type) Source # | |
type Eval (Map f ('Nothing :: Maybe a) :: Maybe b -> Type) Source # | |
type Eval (Map f ('[] :: [a]) :: [b] -> Type) Source # | |
Defined in Fcf.Class.Functor | |
type Eval (Map f (a2 ': as) :: [b] -> Type) Source # | |
type Eval (Map f ('Left x :: Either a2 a1) :: Either a2 b -> Type) Source # | |
type Eval (Map f ('Right a3 :: Either a2 a1) :: Either a2 b -> Type) Source # | |
type Eval (Map f '(x, a2) :: (k2, k1) -> Type) Source # | |
Defined in Fcf.Class.Functor | |
type Eval (Map f '(x, y, a2) :: (k2, k3, k1) -> Type) Source # | |
Defined in Fcf.Class.Functor | |
type Eval (Map f '(x, y, z, a2) :: (k2, k3, k4, k1) -> Type) Source # | |
Defined in Fcf.Class.Functor | |
type Eval (Map f '(x, y, z, w, a2) :: (k2, k3, k4, k5, k1) -> Type) Source # | |
Defined in Fcf.Class.Functor |
data Bimap (c :: a -> Exp a') (d :: b -> Exp b') (e :: f a b) (g :: f a' b') Source #
Type-level bimap
.
Example
>>>
data Example where Ex :: a -> Example -- Hide the type of examples to avoid brittleness in different GHC versions
>>>
:kind! Ex (Eval (Bimap ((+) 1) (Flip (-) 1) '(2, 4)) :: (Natural, Natural))
Ex (Eval (Bimap ((+) 1) (Flip (-) 1) '(2, 4)) :: (Natural, Natural)) :: Example = Ex '(3, 3)