| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Data.Type.Witness.Specific.List.Product
Synopsis
- type family ListProduct (w :: [Type]) = (r :: Type) | r -> w where ...
- injectiveListProduct :: forall (a :: [Type]) (b :: [Type]). ListProduct a ~ ListProduct b => a :~: b
- listProductEq :: forall w (t :: [Type]). (forall a. w a -> Dict (Eq a)) -> ListType w t -> Dict (Eq (ListProduct t))
- listProductShow :: forall w (t :: [Type]). (forall a. w a -> Dict (Show a)) -> ListType w t -> Dict (Show (ListProduct t))
- fillListProduct :: forall w (t :: [Type]). ListType w t -> (forall a. w a -> a) -> ListProduct t
- mapListProduct :: forall w (t :: [Type]). ListType w t -> (forall a. w a -> a -> a) -> ListProduct t -> ListProduct t
- lift2ListProduct :: forall w (t :: [Type]). ListType w t -> (forall a. w a -> a -> a -> a) -> ListProduct t -> ListProduct t -> ListProduct t
- identityListProduct :: forall (lt :: [Type]). ListType Identity lt -> ListProduct lt
- sequenceListProduct :: forall f (lt :: [Type]). Applicative f => ListType f lt -> f (ListProduct lt)
- listProductGetElement :: forall (list :: [Type]) t. ListElementType list t -> ListProduct list -> t
- listProductPutElement :: forall (list :: [Type]) t. ListElementType list t -> t -> ListProduct list -> ListProduct list
- listProductModifyElement :: forall (list :: [Type]) t. ListElementType list t -> (t -> t) -> ListProduct list -> ListProduct list
- listProductSequence :: forall f (list :: [Type]). Applicative f => ListType f list -> f (ListProduct list)
- pickListProduct :: forall w (lta :: [Type]) b. TestEquality w => ListType w lta -> w b -> Maybe (ListProduct lta -> b)
- matchListProduct :: forall (w :: Type -> Type) (lta :: [Type]) (ltb :: [Type]). TestEquality w => ListType w lta -> ListType w ltb -> Either (Some w) (ListProduct lta -> ListProduct ltb)
- data ListProductType (wit :: Type -> Type) t where
- MkListProductType :: forall (wit :: Type -> Type) (lt :: [Type]). ListType wit lt -> ListProductType wit (ListProduct lt)
Documentation
type family ListProduct (w :: [Type]) = (r :: Type) | r -> w where ... Source #
Equations
| ListProduct ('[] :: [Type]) = () | |
| ListProduct (t ': tt) = (t, ListProduct tt) |
injectiveListProduct :: forall (a :: [Type]) (b :: [Type]). ListProduct a ~ ListProduct b => a :~: b Source #
workaround for https://gitlab.haskell.org/ghc/ghc/issues/10833
listProductEq :: forall w (t :: [Type]). (forall a. w a -> Dict (Eq a)) -> ListType w t -> Dict (Eq (ListProduct t)) Source #
listProductShow :: forall w (t :: [Type]). (forall a. w a -> Dict (Show a)) -> ListType w t -> Dict (Show (ListProduct t)) Source #
fillListProduct :: forall w (t :: [Type]). ListType w t -> (forall a. w a -> a) -> ListProduct t Source #
mapListProduct :: forall w (t :: [Type]). ListType w t -> (forall a. w a -> a -> a) -> ListProduct t -> ListProduct t Source #
lift2ListProduct :: forall w (t :: [Type]). ListType w t -> (forall a. w a -> a -> a -> a) -> ListProduct t -> ListProduct t -> ListProduct t Source #
identityListProduct :: forall (lt :: [Type]). ListType Identity lt -> ListProduct lt Source #
sequenceListProduct :: forall f (lt :: [Type]). Applicative f => ListType f lt -> f (ListProduct lt) Source #
listProductGetElement :: forall (list :: [Type]) t. ListElementType list t -> ListProduct list -> t Source #
listProductPutElement :: forall (list :: [Type]) t. ListElementType list t -> t -> ListProduct list -> ListProduct list Source #
listProductModifyElement :: forall (list :: [Type]) t. ListElementType list t -> (t -> t) -> ListProduct list -> ListProduct list Source #
listProductSequence :: forall f (list :: [Type]). Applicative f => ListType f list -> f (ListProduct list) Source #
pickListProduct :: forall w (lta :: [Type]) b. TestEquality w => ListType w lta -> w b -> Maybe (ListProduct lta -> b) Source #
matchListProduct :: forall (w :: Type -> Type) (lta :: [Type]) (ltb :: [Type]). TestEquality w => ListType w lta -> ListType w ltb -> Either (Some w) (ListProduct lta -> ListProduct ltb) Source #
data ListProductType (wit :: Type -> Type) t where Source #
Constructors
| MkListProductType :: forall (wit :: Type -> Type) (lt :: [Type]). ListType wit lt -> ListProductType wit (ListProduct lt) |