witness-0.7: values that witness types
Safe HaskellNone
LanguageGHC2021

Data.Type.Witness.Specific.List.Product

Synopsis

Documentation

type family ListProduct (w :: [Type]) = (r :: Type) | r -> w where ... Source #

Equations

ListProduct ('[] :: [Type]) = () 
ListProduct (t ': tt) = (t, ListProduct tt) 

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 #

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)