first-class-families-0.8.0.1: First-class type families

Safe Haskell | Safe-Inferred
Language | Haskell2010

Fcf.Class.Functor

Synopsis

- data Map :: (a -> Exp b) -> f a -> Exp (f b)
- type FMap = Map

# Documentation

data Map :: (a -> Exp b) -> f a -> Exp (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

Expand

    >>> data AddMul :: Nat -> Nat -> Exp Nat
    >>> type instance Eval (AddMul x y) = (x TL.+ y) TL.* (x TL.+ y)
    >>> :kind! Eval (Map (AddMul 2) '[0, 1, 2, 3, 4])
    Eval (Map (AddMul 2) '[0, 1, 2, 3, 4]) :: [Nat]
    = '[4, 9, 16, 25, 36]

#### Instances

Instances details

type Eval (Map f ('Just a3) :: Maybe a2 -> Type) Source # |
Instance details Defined in Fcf.Class.Functor type Eval (Map f ('Just a3) :: Maybe a2 -> Type) = 'Just (Eval (f a3))
type Eval (Map f ('Nothing :: Maybe a) :: Maybe b -> Type) Source # |
Instance details Defined in Fcf.Class.Functor type Eval (Map f ('Nothing :: Maybe a) :: Maybe b -> Type) = 'Nothing :: Maybe b
type Eval (Map f ('[] :: [a]) :: [b] -> Type) Source # |
Instance details Defined in Fcf.Class.Functor type Eval (Map f ('[] :: [a]) :: [b] -> Type) = '[] :: [b]
type Eval (Map f (a2 ': as) :: [b] -> Type) Source # |
Instance details Defined in Fcf.Class.Functor type Eval (Map f (a2 ': as) :: [b] -> Type) = Eval (f a2) ': Eval (Map f as)
type Eval (Map f ('Left x :: Either a2 a1) :: Either a2 b -> Type) Source # |
Instance details Defined in Fcf.Class.Functor type Eval (Map f ('Left x :: Either a2 a1) :: Either a2 b -> Type) = 'Left x :: Either a2 b
type Eval (Map f ('Right a3 :: Either a2 a1) :: Either a2 b -> Type) Source # |
Instance details Defined in Fcf.Class.Functor type Eval (Map f ('Right a3 :: Either a2 a1) :: Either a2 b -> Type) = 'Right (Eval (f a3)) :: Either a2 b
type Eval (Map f '(x, a2) :: (k2, k1) -> Type) Source # |
Instance details Defined in Fcf.Class.Functor type Eval (Map f '(x, a2) :: (k2, k1) -> Type) = '(x, Eval (f a2))
type Eval (Map f '(x, y, a2) :: (k2, k3, k1) -> Type) Source # |
Instance details Defined in Fcf.Class.Functor type Eval (Map f '(x, y, a2) :: (k2, k3, k1) -> Type) = '(x, y, Eval (f a2))
type Eval (Map f '(x, y, z, a2) :: (k2, k3, k4, k1) -> Type) Source # |
Instance details Defined in Fcf.Class.Functor type Eval (Map f '(x, y, z, a2) :: (k2, k3, k4, k1) -> Type) = '(x, y, z, Eval (f a2))
type Eval (Map f '(x, y, z, w, a2) :: (k2, k3, k4, k5, k1) -> Type) Source # |
Instance details Defined in Fcf.Class.Functor type Eval (Map f '(x, y, z, w, a2) :: (k2, k3, k4, k5, k1) -> Type) = '(x, y, z, w, Eval (f a2))

type FMap = Map Source #

Synonym of `Map` to avoid name clashes.