witness 0.6.2 → 0.7
raw patch · 22 files changed
+96/−45 lines, 22 filesdep ~basedep ~constraintsdep ~containersPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base, constraints, containers
API changes (from Hackage documentation)
- Data.Type.Witness.General.Finite: instance forall k (w :: k -> Type). (Data.Type.Equality.TestEquality w, Data.Type.Witness.General.Finite.FiniteWitness w) => Data.Countable.Countable (Data.Type.Witness.Specific.Some.Some w)
- Data.Type.Witness.General.Finite: instance forall k (w :: k -> Type). (Data.Type.Equality.TestEquality w, Data.Type.Witness.General.Finite.FiniteWitness w) => Data.Searchable.Finite (Data.Type.Witness.Specific.Some.Some w)
- Data.Type.Witness.General.Finite: instance forall k (w :: k -> Type). (Data.Type.Equality.TestEquality w, Data.Type.Witness.General.Finite.FiniteWitness w) => Data.Searchable.Searchable (Data.Type.Witness.Specific.Some.Some w)
- Data.Type.Witness.General.Representative: type Subrepresentative (p :: k -> Type) (q :: k -> Type) = forall (a :: k). p a -> Dict (Is q a)
- Data.Type.Witness.General.TestHetEquality: class TestHetEquality (w :: forall k. k -> Type)
- Data.Type.Witness.Specific.Either: instance forall k (c :: k -> GHC.Types.Constraint) (p :: k -> Type) (q :: k -> Type). (Data.Type.Witness.General.WitnessConstraint.WitnessConstraint c p, Data.Type.Witness.General.WitnessConstraint.WitnessConstraint c q) => Data.Type.Witness.General.WitnessConstraint.WitnessConstraint c (Data.Type.Witness.Specific.Either.EitherType p q)
- Data.Type.Witness.Specific.Either: instance forall k (lt :: k -> Type) (a :: k). Data.Type.Witness.General.ListElement.ListElementWitness lt => Data.Type.Witness.General.ListElement.ListElementWitness (Data.Type.Witness.Specific.Either.ConsType a lt)
- Data.Type.Witness.Specific.Either: instance forall k (p :: k -> Type) (q :: k -> Type). (Data.Type.Witness.General.Finite.FiniteWitness p, Data.Type.Witness.General.Finite.FiniteWitness q) => Data.Type.Witness.General.Finite.FiniteWitness (Data.Type.Witness.Specific.Either.EitherType p q)
- Data.Type.Witness.Specific.Either: instance forall k (p :: k -> Type) (t :: k) (q :: k -> Type). (GHC.Show.Show (p t), GHC.Show.Show (q t)) => GHC.Show.Show (Data.Type.Witness.Specific.Either.EitherType p q t)
- Data.Type.Witness.Specific.Either: instance forall k (w1 :: k -> Type) (w2 :: k -> Type). (Data.Type.Equality.TestEquality w1, Data.Type.Equality.TestEquality w2) => Data.Type.Equality.TestEquality (Data.Type.Witness.Specific.Either.EitherType w1 w2)
- Data.Type.Witness.Specific.Either: instance forall kt (p :: kt -> Type) (q :: kt -> Type). (Data.Type.Witness.General.AllConstraint.AllConstraint GHC.Show.Show p, Data.Type.Witness.General.AllConstraint.AllConstraint GHC.Show.Show q) => Data.Type.Witness.General.AllConstraint.AllConstraint GHC.Show.Show (Data.Type.Witness.Specific.Either.EitherType p q)
- Data.Type.Witness.Specific.List.List: instance forall a1 (w :: a1 -> Type) (a2 :: a1) (lt :: [a1]). (Data.Type.Witness.General.Representative.Is w a2, Data.Type.Witness.General.Representative.Is (Data.Type.Witness.Specific.List.List.ListType w) lt) => Data.Type.Witness.General.Representative.Is (Data.Type.Witness.Specific.List.List.ListType w) (a2 : lt)
- Data.Type.Witness.Specific.List.List: instance forall k (w :: k -> Type) (lt :: [k]). (forall (a :: k). GHC.Show.Show (w a)) => GHC.Show.Show (Data.Type.Witness.Specific.List.List.ListType w lt)
- Data.Type.Witness.Specific.List.List: instance forall k (w :: k -> Type). Data.Type.Equality.TestEquality w => Data.Type.Equality.TestEquality (Data.Type.Witness.Specific.List.List.ListType w)
- Data.Type.Witness.Specific.List.List: instance forall k (w :: k -> Type). Data.Type.Witness.General.Representative.Representative w => Data.Type.Witness.General.Representative.Is (Data.Type.Witness.Specific.List.List.ListType w) '[]
- Data.Type.Witness.Specific.List.List: instance forall k (w :: k -> Type). Data.Type.Witness.General.Representative.Representative w => Data.Type.Witness.General.Representative.Representative (Data.Type.Witness.Specific.List.List.ListType w)
- Data.Type.Witness.Specific.List.Sum: instance Data.Type.Witness.General.Representative.Representative w => Data.Type.Witness.General.Representative.Is (Data.Type.Witness.Specific.List.Sum.ListSumType w) Data.Void.Void
- Data.Type.Witness.Specific.OrderedWitnessMap.For: instance forall k (f :: k -> Type) (w :: k -> Type). Data.Type.Witness.General.Order.TestOrder w => GHC.Base.Monoid (Data.Type.Witness.Specific.OrderedWitnessMap.For.OrderedWitnessMapFor f w)
- Data.Type.Witness.Specific.OrderedWitnessMap.For: instance forall k (f :: k -> Type) (w :: k -> Type). Data.Type.Witness.General.Order.TestOrder w => GHC.Base.Semigroup (Data.Type.Witness.Specific.OrderedWitnessMap.For.OrderedWitnessMapFor f w)
- Data.Type.Witness.Specific.Pair: instance forall k (c :: k -> GHC.Types.Constraint) (w2 :: k -> Type) (w1 :: k -> Type). Data.Type.Witness.General.WitnessConstraint.WitnessConstraint c w2 => Data.Type.Witness.General.WitnessConstraint.WitnessConstraint c (Data.Type.Witness.Specific.Pair.PairType w1 w2)
- Data.Type.Witness.Specific.Pair: instance forall k (w1 :: k -> Type) (t :: k) (w2 :: k -> Type). (Data.Type.Witness.General.Representative.Is w1 t, Data.Type.Witness.General.Representative.Is w2 t) => Data.Type.Witness.General.Representative.Is (Data.Type.Witness.Specific.Pair.PairType w1 w2) t
- Data.Type.Witness.Specific.Pair: instance forall k (w1 :: k -> Type) (w2 :: k -> Type). (Data.Type.Witness.General.Representative.Representative w1, Data.Type.Witness.General.Representative.Representative w2) => Data.Type.Witness.General.Representative.Representative (Data.Type.Witness.Specific.Pair.PairType w1 w2)
- Data.Type.Witness.Specific.Pair: instance forall k (w1 :: k -> Type) (w2 :: k -> Type). Data.Type.Equality.TestEquality w1 => Data.Type.Equality.TestEquality (Data.Type.Witness.Specific.Pair.PairType w1 w2)
- Data.Type.Witness.Specific.Pair: instance forall k (w1 :: k -> Type) (w2 :: k -> Type). Data.Type.Witness.General.Order.TestOrder w1 => Data.Type.Witness.General.Order.TestOrder (Data.Type.Witness.Specific.Pair.PairType w1 w2)
- Data.Type.Witness.Specific.Some: instance forall k (w :: k -> Type). Data.Type.Equality.TestEquality w => GHC.Classes.Eq (Data.Type.Witness.Specific.Some.Some w)
- Data.Type.Witness.Specific.Some: instance forall k (w :: k -> Type). Data.Type.Witness.General.AllConstraint.AllConstraint GHC.Show.Show w => GHC.Show.Show (Data.Type.Witness.Specific.Some.Some w)
- Data.Type.Witness.Specific.Some: instance forall k (w :: k -> Type). Data.Type.Witness.General.Order.TestOrder w => GHC.Classes.Ord (Data.Type.Witness.Specific.Some.Some w)
- Data.Type.Witness.Specific.Some: pattern MkSome :: w a -> Some w
- Data.Type.Witness.Specific.Some: pattern MkSomeOf :: w a -> a -> SomeOf w
- Data.Type.Witness.Specific.WitnessMap.For: instance forall k (f :: k -> Type) (w :: k -> Type). GHC.Base.Monoid (Data.Type.Witness.Specific.WitnessMap.For.WitnessMapFor f w)
- Data.Type.Witness.Specific.WitnessMap.For: instance forall k (f :: k -> Type) (w :: k -> Type). GHC.Base.Semigroup (Data.Type.Witness.Specific.WitnessMap.For.WitnessMapFor f w)
+ Data.Type.Witness.General.Finite: instance forall k (w :: k -> GHC.Types.Type). (Data.Type.Equality.TestEquality w, Data.Type.Witness.General.Finite.FiniteWitness w) => Data.Countable.Countable (Data.Type.Witness.Specific.Some.Some w)
+ Data.Type.Witness.General.Finite: instance forall k (w :: k -> GHC.Types.Type). (Data.Type.Equality.TestEquality w, Data.Type.Witness.General.Finite.FiniteWitness w) => Data.Searchable.Finite (Data.Type.Witness.Specific.Some.Some w)
+ Data.Type.Witness.General.Finite: instance forall k (w :: k -> GHC.Types.Type). (Data.Type.Equality.TestEquality w, Data.Type.Witness.General.Finite.FiniteWitness w) => Data.Searchable.Searchable (Data.Type.Witness.Specific.Some.Some w)
+ Data.Type.Witness.General.Representative: type Subrepresentative (p :: k -> Type) (q :: k -> Type) = forall (a :: k). () => p a -> Dict Is q a
+ Data.Type.Witness.General.TestHetEquality: class TestHetEquality (w :: forall k. () => k -> Type)
+ Data.Type.Witness.Specific.All: mapAllFor :: forall {k} f1 f2 (w :: k -> Type). (forall (a :: k). () => f1 a -> f2 a) -> AllFor f1 w -> AllFor f2 w
+ Data.Type.Witness.Specific.Either: instance forall k (c :: k -> GHC.Types.Constraint) (p :: k -> GHC.Types.Type) (q :: k -> GHC.Types.Type). (Data.Type.Witness.General.WitnessConstraint.WitnessConstraint c p, Data.Type.Witness.General.WitnessConstraint.WitnessConstraint c q) => Data.Type.Witness.General.WitnessConstraint.WitnessConstraint c (Data.Type.Witness.Specific.Either.EitherType p q)
+ Data.Type.Witness.Specific.Either: instance forall k (lt :: k -> GHC.Types.Type) (a :: k). Data.Type.Witness.General.ListElement.ListElementWitness lt => Data.Type.Witness.General.ListElement.ListElementWitness (Data.Type.Witness.Specific.Either.ConsType a lt)
+ Data.Type.Witness.Specific.Either: instance forall k (p :: k -> GHC.Types.Type) (q :: k -> GHC.Types.Type). (Data.Type.Witness.General.Finite.FiniteWitness p, Data.Type.Witness.General.Finite.FiniteWitness q) => Data.Type.Witness.General.Finite.FiniteWitness (Data.Type.Witness.Specific.Either.EitherType p q)
+ Data.Type.Witness.Specific.Either: instance forall k (p :: k -> GHC.Types.Type) (t :: k) (q :: k -> GHC.Types.Type). (GHC.Show.Show (p t), GHC.Show.Show (q t)) => GHC.Show.Show (Data.Type.Witness.Specific.Either.EitherType p q t)
+ Data.Type.Witness.Specific.Either: instance forall k (w1 :: k -> GHC.Types.Type) (w2 :: k -> GHC.Types.Type). (Data.Type.Equality.TestEquality w1, Data.Type.Equality.TestEquality w2) => Data.Type.Equality.TestEquality (Data.Type.Witness.Specific.Either.EitherType w1 w2)
+ Data.Type.Witness.Specific.Either: instance forall kt (p :: kt -> GHC.Types.Type) (q :: kt -> GHC.Types.Type). (Data.Type.Witness.General.AllConstraint.AllConstraint GHC.Show.Show p, Data.Type.Witness.General.AllConstraint.AllConstraint GHC.Show.Show q) => Data.Type.Witness.General.AllConstraint.AllConstraint GHC.Show.Show (Data.Type.Witness.Specific.Either.EitherType p q)
+ Data.Type.Witness.Specific.List.List: instance forall a1 (w :: a1 -> GHC.Types.Type) (a2 :: a1) (lt :: [a1]). (Data.Type.Witness.General.Representative.Is w a2, Data.Type.Witness.General.Representative.Is (Data.Type.Witness.Specific.List.List.ListType w) lt) => Data.Type.Witness.General.Representative.Is (Data.Type.Witness.Specific.List.List.ListType w) (a2 : lt)
+ Data.Type.Witness.Specific.List.List: instance forall k (w :: k -> GHC.Types.Type) (lt :: [k]). (forall (a :: k). GHC.Show.Show (w a)) => GHC.Show.Show (Data.Type.Witness.Specific.List.List.ListType w lt)
+ Data.Type.Witness.Specific.List.List: instance forall k (w :: k -> GHC.Types.Type). Data.Type.Equality.TestEquality w => Data.Type.Equality.TestEquality (Data.Type.Witness.Specific.List.List.ListType w)
+ Data.Type.Witness.Specific.List.List: instance forall k (w :: k -> GHC.Types.Type). Data.Type.Witness.General.Representative.Representative w => Data.Type.Witness.General.Representative.Is (Data.Type.Witness.Specific.List.List.ListType w) '[]
+ Data.Type.Witness.Specific.List.List: instance forall k (w :: k -> GHC.Types.Type). Data.Type.Witness.General.Representative.Representative w => Data.Type.Witness.General.Representative.Representative (Data.Type.Witness.Specific.List.List.ListType w)
+ Data.Type.Witness.Specific.List.List: sequenceComposeListType :: forall {k} f (w :: k -> Type) (lt :: [k]). Applicative f => ListType (Compose f w) lt -> f (ListType w lt)
+ Data.Type.Witness.Specific.List.Product: listProductSequence :: forall f (list :: [Type]). Applicative f => ListType f list -> f (ListProduct list)
+ Data.Type.Witness.Specific.List.Product: 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.Type.Witness.Specific.List.Product: pickListProduct :: forall w (lta :: [Type]) b. TestEquality w => ListType w lta -> w b -> Maybe (ListProduct lta -> b)
+ Data.Type.Witness.Specific.List.Sum: instance Data.Type.Witness.General.Representative.Representative w => Data.Type.Witness.General.Representative.Is (Data.Type.Witness.Specific.List.Sum.ListSumType w) GHC.Base.Void
+ Data.Type.Witness.Specific.OrderedWitnessMap.For: instance forall k (f :: k -> GHC.Types.Type) (w :: k -> GHC.Types.Type). Data.Type.Witness.General.Order.TestOrder w => GHC.Base.Monoid (Data.Type.Witness.Specific.OrderedWitnessMap.For.OrderedWitnessMapFor f w)
+ Data.Type.Witness.Specific.OrderedWitnessMap.For: instance forall k (f :: k -> GHC.Types.Type) (w :: k -> GHC.Types.Type). Data.Type.Witness.General.Order.TestOrder w => GHC.Base.Semigroup (Data.Type.Witness.Specific.OrderedWitnessMap.For.OrderedWitnessMapFor f w)
+ Data.Type.Witness.Specific.Pair: instance forall k (c :: k -> GHC.Types.Constraint) (w2 :: k -> GHC.Types.Type) (w1 :: k -> GHC.Types.Type). Data.Type.Witness.General.WitnessConstraint.WitnessConstraint c w2 => Data.Type.Witness.General.WitnessConstraint.WitnessConstraint c (Data.Type.Witness.Specific.Pair.PairType w1 w2)
+ Data.Type.Witness.Specific.Pair: instance forall k (w1 :: k -> GHC.Types.Type) (t :: k) (w2 :: k -> GHC.Types.Type). (Data.Type.Witness.General.Representative.Is w1 t, Data.Type.Witness.General.Representative.Is w2 t) => Data.Type.Witness.General.Representative.Is (Data.Type.Witness.Specific.Pair.PairType w1 w2) t
+ Data.Type.Witness.Specific.Pair: instance forall k (w1 :: k -> GHC.Types.Type) (w2 :: k -> GHC.Types.Type). (Data.Type.Witness.General.Representative.Representative w1, Data.Type.Witness.General.Representative.Representative w2) => Data.Type.Witness.General.Representative.Representative (Data.Type.Witness.Specific.Pair.PairType w1 w2)
+ Data.Type.Witness.Specific.Pair: instance forall k (w1 :: k -> GHC.Types.Type) (w2 :: k -> GHC.Types.Type). Data.Type.Equality.TestEquality w1 => Data.Type.Equality.TestEquality (Data.Type.Witness.Specific.Pair.PairType w1 w2)
+ Data.Type.Witness.Specific.Pair: instance forall k (w1 :: k -> GHC.Types.Type) (w2 :: k -> GHC.Types.Type). Data.Type.Witness.General.Order.TestOrder w1 => Data.Type.Witness.General.Order.TestOrder (Data.Type.Witness.Specific.Pair.PairType w1 w2)
+ Data.Type.Witness.Specific.Some: instance forall k (w :: k -> GHC.Types.Type). Data.Type.Equality.TestEquality w => GHC.Classes.Eq (Data.Type.Witness.Specific.Some.Some w)
+ Data.Type.Witness.Specific.Some: instance forall k (w :: k -> GHC.Types.Type). Data.Type.Witness.General.AllConstraint.AllConstraint GHC.Show.Show w => GHC.Show.Show (Data.Type.Witness.Specific.Some.Some w)
+ Data.Type.Witness.Specific.Some: instance forall k (w :: k -> GHC.Types.Type). Data.Type.Witness.General.Order.TestOrder w => GHC.Classes.Ord (Data.Type.Witness.Specific.Some.Some w)
+ Data.Type.Witness.Specific.Some: pattern MkSome :: forall {k} w (a :: k). () => w a -> Some w
+ Data.Type.Witness.Specific.WitnessMap.For: instance forall k (f :: k -> GHC.Types.Type) (w :: k -> GHC.Types.Type). GHC.Base.Monoid (Data.Type.Witness.Specific.WitnessMap.For.WitnessMapFor f w)
+ Data.Type.Witness.Specific.WitnessMap.For: instance forall k (f :: k -> GHC.Types.Type) (w :: k -> GHC.Types.Type). GHC.Base.Semigroup (Data.Type.Witness.Specific.WitnessMap.For.WitnessMapFor f w)
- Data.PeanoNat: type family ListLength l
+ Data.PeanoNat: type family ListLength (l :: [k]) :: PeanoNat
- Data.Type.Witness.Apply: reflId :: forall k (cat :: k -> k -> Type) (a :: k) (b :: k). Category cat => (a :~: b) -> cat a b
+ Data.Type.Witness.Apply: reflId :: forall k cat (a :: k) (b :: k). Category cat => (a :~: b) -> cat a b
- Data.Type.Witness.Apply: reflId1 :: forall kq (cat :: kq -> kq -> Type) kp (w :: kp -> kq) (a :: kp) (b :: kp). Category cat => (a :~: b) -> cat (w a) (w b)
+ Data.Type.Witness.Apply: reflId1 :: forall kq cat kp (w :: kp -> kq) (a :: kp) (b :: kp). Category cat => (a :~: b) -> cat (w a) (w b)
- Data.Type.Witness.Apply: withRefl :: forall k (a :: k) (b :: k) (r :: Type). (a :~: b) -> (a ~ b => r) -> r
+ Data.Type.Witness.Apply: withRefl :: forall k (a :: k) (b :: k) r. (a :~: b) -> (a ~ b => r) -> r
- Data.Type.Witness.General.AllConstraint: allConstraint :: forall t. AllConstraint c w => Dict (c (w t))
+ Data.Type.Witness.General.AllConstraint: allConstraint :: forall (t :: kt). AllConstraint c w => Dict (c (w t))
- Data.Type.Witness.General.AllConstraint: allShow :: forall k (w :: k -> Type) (t :: k). AllConstraint Show w => w t -> String
+ Data.Type.Witness.General.AllConstraint: allShow :: forall k w (t :: k). AllConstraint Show w => w t -> String
- Data.Type.Witness.General.AllConstraint: class AllConstraint c w
+ Data.Type.Witness.General.AllConstraint: class AllConstraint (c :: kw -> Constraint) (w :: kt -> kw)
- Data.Type.Witness.General.AllConstraint: withAllConstraint :: forall k (c :: Type -> Constraint) (w :: k -> Type) (a :: k) (r :: Type). AllConstraint c w => w a -> (c (w a) => r) -> r
+ Data.Type.Witness.General.AllConstraint: withAllConstraint :: forall k c w (a :: k) r. AllConstraint c w => w a -> (c (w a) => r) -> r
- Data.Type.Witness.General.Finite: allForCodomain :: FiniteWitness w => AllFor f w -> [Some f]
+ Data.Type.Witness.General.Finite: allForCodomain :: forall {k} (w :: k -> Type) (f :: k -> Type). FiniteWitness w => AllFor f w -> [Some f]
- Data.Type.Witness.General.Finite: allWitnesses :: FiniteWitness w => [Some w]
+ Data.Type.Witness.General.Finite: allWitnesses :: forall {k} (w :: k -> Type). FiniteWitness w => [Some w]
- Data.Type.Witness.General.Finite: assembleAllFor :: forall (m :: Type -> Type) (f :: k -> Type). (FiniteWitness w, Applicative m) => (forall (t :: k). w t -> m (f t)) -> m (AllFor f w)
+ Data.Type.Witness.General.Finite: assembleAllFor :: (FiniteWitness w, Applicative m) => (forall (t :: k). () => w t -> m (f t)) -> m (AllFor f w)
- Data.Type.Witness.General.Finite: assembleAllOf :: (FiniteWitness w, Applicative m) => (forall t. w t -> m t) -> m (AllOf w)
+ Data.Type.Witness.General.Finite: assembleAllOf :: (FiniteWitness w, Applicative m) => (forall t. () => w t -> m t) -> m (AllOf w)
- Data.Type.Witness.General.HetConstraint: [MkHetConstraintWitness] :: forall k (c :: k -> Constraint) (t :: k). c t => HetConstraintWitness c t
+ Data.Type.Witness.General.HetConstraint: [MkHetConstraintWitness] :: forall k1 (c :: k1 -> Constraint) (t1 :: k1). c t1 => HetConstraintWitness c t1
- Data.Type.Witness.General.HetConstraint: class HetConstraint c t
+ Data.Type.Witness.General.HetConstraint: class HetConstraint (c :: k1 -> Constraint) (t :: k2)
- Data.Type.Witness.General.HetConstraint: data HetConstraintWitness c t
+ Data.Type.Witness.General.HetConstraint: data HetConstraintWitness (c :: k1 -> Constraint) (t :: k2)
- Data.Type.Witness.General.ListElement: class Is (ListType Proxy) (WitnessTypeList w) => ListElementWitness (w :: k -> Type) where {
+ Data.Type.Witness.General.ListElement: class Is ListType Proxy :: k -> Type WitnessTypeList w => ListElementWitness (w :: k -> Type) where {
- Data.Type.Witness.General.ListElement: fromListElementWitness :: forall t. ListElementWitness w => ListElementType (WitnessTypeList w) t -> w t
+ Data.Type.Witness.General.ListElement: fromListElementWitness :: forall (t :: k). ListElementWitness w => ListElementType (WitnessTypeList w) t -> w t
- Data.Type.Witness.General.ListElement: toListElementWitness :: forall t. ListElementWitness w => w t -> ListElementType (WitnessTypeList w) t
+ Data.Type.Witness.General.ListElement: toListElementWitness :: forall (t :: k). ListElementWitness w => w t -> ListElementType (WitnessTypeList w) t
- Data.Type.Witness.General.ListElement: type WitnessTypeList w :: [k];
+ Data.Type.Witness.General.ListElement: type WitnessTypeList (w :: k -> Type) :: [k];
- Data.Type.Witness.General.Order: wOrderingToOrdering :: WOrdering a b -> Ordering
+ Data.Type.Witness.General.Order: wOrderingToOrdering :: forall {k} (a :: k) (b :: k). WOrdering a b -> Ordering
- Data.Type.Witness.General.Representative: class Representative rep => Is rep a
+ Data.Type.Witness.General.Representative: class Representative rep => Is (rep :: k -> Type) (a :: k)
- Data.Type.Witness.General.Representative: class Representative rep
+ Data.Type.Witness.General.Representative: class Representative (rep :: k -> Type)
- Data.Type.Witness.General.Representative: fromRepWitness :: Dict (Is rep a) -> rep a
+ Data.Type.Witness.General.Representative: fromRepWitness :: forall {k} rep (a :: k). Dict (Is rep a) -> rep a
- Data.Type.Witness.General.Representative: isWitnessRepresentative :: Dict (Is rep a) -> rep a
+ Data.Type.Witness.General.Representative: isWitnessRepresentative :: forall {k} rep (a :: k). Dict (Is rep a) -> rep a
- Data.Type.Witness.General.Representative: matchIs :: forall w a b. (TestEquality w, Is w a, Is w b) => Maybe (a :~: b)
+ Data.Type.Witness.General.Representative: matchIs :: forall {k} (w :: k -> Type) (a :: k) (b :: k). (TestEquality w, Is w a, Is w b) => Maybe (a :~: b)
- Data.Type.Witness.General.Representative: mkSomeFor :: Is rep a => f a -> SomeFor f rep
+ Data.Type.Witness.General.Representative: mkSomeFor :: forall {k} (rep :: k -> Type) (a :: k) f. Is rep a => f a -> SomeFor f rep
- Data.Type.Witness.General.Representative: mkSomeOf :: Is rep a => a -> SomeOf rep
+ Data.Type.Witness.General.Representative: mkSomeOf :: forall (rep :: Type -> Type) a. Is rep a => a -> SomeOf rep
- Data.Type.Witness.General.Representative: rerepresentative :: Is rep a => p a -> rep a
+ Data.Type.Witness.General.Representative: rerepresentative :: forall {k} rep (a :: k) p. Is rep a => p a -> rep a
- Data.Type.Witness.General.Representative: withRepresentative :: Representative rep => rep a -> (Is rep a => r) -> r
+ Data.Type.Witness.General.Representative: withRepresentative :: forall {k} rep (a :: k) r. Representative rep => rep a -> (Is rep a => r) -> r
- Data.Type.Witness.General.Representative: withSubrepresentative :: Subrepresentative p q -> p a -> (Is q a => r) -> r
+ Data.Type.Witness.General.Representative: withSubrepresentative :: forall {k} p (q :: k -> Type) (a :: k) r. Subrepresentative p q -> p a -> (Is q a => r) -> r
- Data.Type.Witness.General.TestHetEquality: [HetRefl] :: forall k (a :: k). HetEqual a a
+ Data.Type.Witness.General.TestHetEquality: [HetRefl] :: forall ka (a :: ka). HetEqual a a
- Data.Type.Witness.General.TestHetEquality: data HetEqual a b
+ Data.Type.Witness.General.TestHetEquality: data HetEqual (a :: ka) (b :: kb)
- Data.Type.Witness.General.TestHetEquality: hetHomoEq :: forall (k :: Type) (a :: k) (b :: k). (a :~~: b) -> a :~: b
+ Data.Type.Witness.General.TestHetEquality: hetHomoEq :: forall k (a :: k) (b :: k). (a :~~: b) -> a :~: b
- Data.Type.Witness.General.TestHetEquality: testHetEquality :: forall (ka :: Type) (a :: ka) (kb :: Type) (b :: kb). TestHetEquality w => w a -> w b -> Maybe (a :~~: b)
+ Data.Type.Witness.General.TestHetEquality: testHetEquality :: forall ka (a :: ka) kb (b :: kb). TestHetEquality w => w a -> w b -> Maybe (a :~~: b)
- Data.Type.Witness.General.TestHetEquality: withHRefl :: forall ka (a :: ka) kb (b :: kb) (r :: Type). (a :~~: b) -> (a ~~ b => r) -> r
+ Data.Type.Witness.General.TestHetEquality: withHRefl :: forall ka (a :: ka) kb (b :: kb) r. (a :~~: b) -> (a ~~ b => r) -> r
- Data.Type.Witness.General.WitnessConstraint: class WitnessConstraint c w
+ Data.Type.Witness.General.WitnessConstraint: class WitnessConstraint (c :: k -> Constraint) (w :: k -> Type)
- Data.Type.Witness.General.WitnessConstraint: witnessConstraint :: forall t. WitnessConstraint c w => w t -> Dict (c t)
+ Data.Type.Witness.General.WitnessConstraint: witnessConstraint :: forall (t :: k). WitnessConstraint c w => w t -> Dict (c t)
- Data.Type.Witness.General.WitnessValue: class WitnessValue w where {
+ Data.Type.Witness.General.WitnessValue: class WitnessValue (w :: k -> Type) where {
- Data.Type.Witness.General.WitnessValue: type WitnessValueType w :: Type;
+ Data.Type.Witness.General.WitnessValue: type WitnessValueType (w :: k -> Type);
- Data.Type.Witness.General.WitnessValue: valueToWitness :: forall r. WitnessValue w => WitnessValueType w -> (forall t. w t -> r) -> r
+ Data.Type.Witness.General.WitnessValue: valueToWitness :: WitnessValue w => WitnessValueType w -> (forall (t :: k). () => w t -> r) -> r
- Data.Type.Witness.General.WitnessValue: witnessToValue :: forall t. WitnessValue w => w t -> WitnessValueType w
+ Data.Type.Witness.General.WitnessValue: witnessToValue :: forall (t :: k). WitnessValue w => w t -> WitnessValueType w
- Data.Type.Witness.Specific.All: MkAllFor :: (forall t. w t -> f t) -> AllFor f w
+ Data.Type.Witness.Specific.All: MkAllFor :: (forall (t :: k). () => w t -> f t) -> AllFor (f :: k -> Type) (w :: k -> Type)
- Data.Type.Witness.Specific.All: MkAllOf :: (forall t. w t -> t) -> AllOf w
+ Data.Type.Witness.Specific.All: MkAllOf :: (forall t. () => w t -> t) -> AllOf (w :: Type -> Type)
- Data.Type.Witness.Specific.All: [unAllFor] :: AllFor f w -> forall t. w t -> f t
+ Data.Type.Witness.Specific.All: [unAllFor] :: AllFor (f :: k -> Type) (w :: k -> Type) -> forall (t :: k). () => w t -> f t
- Data.Type.Witness.Specific.All: [unAllOf] :: AllOf w -> forall t. w t -> t
+ Data.Type.Witness.Specific.All: [unAllOf] :: AllOf (w :: Type -> Type) -> forall t. () => w t -> t
- Data.Type.Witness.Specific.All: allMapSome :: AllFor f w -> SomeFor g w -> SomeFor g f
+ Data.Type.Witness.Specific.All: allMapSome :: forall {k} (f :: k -> Type) (w :: k -> Type) (g :: k -> Type). AllFor f w -> SomeFor g w -> SomeFor g f
- Data.Type.Witness.Specific.All: newtype AllFor f w
+ Data.Type.Witness.Specific.All: newtype AllFor (f :: k -> Type) (w :: k -> Type)
- Data.Type.Witness.Specific.All: newtype AllOf w
+ Data.Type.Witness.Specific.All: newtype AllOf (w :: Type -> Type)
- Data.Type.Witness.Specific.All: setAllOf :: forall (w :: Type -> Type) (a :: Type). TestEquality w => w a -> a -> AllOf w -> AllOf w
+ Data.Type.Witness.Specific.All: setAllOf :: TestEquality w => w a -> a -> AllOf w -> AllOf w
- Data.Type.Witness.Specific.All: type family UnAllOf aw
+ Data.Type.Witness.Specific.All: type family UnAllOf aw :: Type -> Type
- Data.Type.Witness.Specific.ApplyStack: applyConcatRefl :: forall k (f1 :: [k -> k]) (f2 :: [k -> k]) (a :: k) w. Is (ListType w) f1 => ApplyStack (Concat f1 f2) a :~: ApplyStack f1 (ApplyStack f2 a)
+ Data.Type.Witness.Specific.ApplyStack: applyConcatRefl :: forall k (f1 :: [k -> k]) (f2 :: [k -> k]) (a :: k) (w :: (k -> k) -> Type). Is (ListType w) f1 => ApplyStack (Concat f1 f2) a :~: ApplyStack f1 (ApplyStack f2 a)
- Data.Type.Witness.Specific.ApplyStack: type family ApplyStack f a
+ Data.Type.Witness.Specific.ApplyStack: type family ApplyStack (f :: [k -> k]) (a :: k) :: k
- Data.Type.Witness.Specific.ApplyStack: witApplyConcatRefl :: forall k (f1 :: [k -> k]) (f2 :: [k -> k]) (a :: k) w. ListType w f1 -> ApplyStack (Concat f1 f2) a :~: ApplyStack f1 (ApplyStack f2 a)
+ Data.Type.Witness.Specific.ApplyStack: witApplyConcatRefl :: forall k (f1 :: [k -> k]) (f2 :: [k -> k]) (a :: k) (w :: (k -> k) -> Type). ListType w f1 -> ApplyStack (Concat f1 f2) a :~: ApplyStack f1 (ApplyStack f2 a)
- Data.Type.Witness.Specific.Concat: concatEmptyRefl :: ListType w a -> Concat a '[] :~: a
+ Data.Type.Witness.Specific.Concat: concatEmptyRefl :: forall {k} (w :: k -> Type) (a :: [k]). ListType w a -> Concat a ('[] :: [k]) :~: a
- Data.Type.Witness.Specific.Concat: type family Concat a b
+ Data.Type.Witness.Specific.Concat: type family Concat (a :: [k]) (b :: [k]) :: [k]
- Data.Type.Witness.Specific.Either: LeftType :: w1 t -> EitherType w1 w2 t
+ Data.Type.Witness.Specific.Either: LeftType :: w1 t -> EitherType (w1 :: k -> Type) (w2 :: k -> Type) (t :: k)
- Data.Type.Witness.Specific.Either: RightType :: w2 t -> EitherType w1 w2 t
+ Data.Type.Witness.Specific.Either: RightType :: w2 t -> EitherType (w1 :: k -> Type) (w2 :: k -> Type) (t :: k)
- Data.Type.Witness.Specific.Either: data EitherType w1 w2 t
+ Data.Type.Witness.Specific.Either: data EitherType (w1 :: k -> Type) (w2 :: k -> Type) (t :: k)
- Data.Type.Witness.Specific.Either: eitherAllFor :: AllFor f sel1 -> AllFor f sel2 -> AllFor f (EitherType sel1 sel2)
+ Data.Type.Witness.Specific.Either: eitherAllFor :: forall {k} (f :: k -> Type) (sel1 :: k -> Type) (sel2 :: k -> Type). AllFor f sel1 -> AllFor f sel2 -> AllFor f (EitherType sel1 sel2)
- Data.Type.Witness.Specific.Either: eitherAllOf :: AllOf sel1 -> AllOf sel2 -> AllOf (EitherType sel1 sel2)
+ Data.Type.Witness.Specific.Either: eitherAllOf :: forall (sel1 :: Type -> Type) (sel2 :: Type -> Type). AllOf sel1 -> AllOf sel2 -> AllOf (EitherType sel1 sel2)
- Data.Type.Witness.Specific.Either: type ConsType a = EitherType (SingleType a)
+ Data.Type.Witness.Specific.Either: type ConsType (a :: k) = EitherType SingleType a
- Data.Type.Witness.Specific.Empty: MkEmptyType :: Void -> EmptyType t
+ Data.Type.Witness.Specific.Empty: MkEmptyType :: Void -> EmptyType (t :: k)
- Data.Type.Witness.Specific.Empty: emptyAllFor :: AllFor f EmptyType
+ Data.Type.Witness.Specific.Empty: emptyAllFor :: forall {k} (f :: k -> Type). AllFor f (EmptyType :: k -> Type)
- Data.Type.Witness.Specific.Empty: emptyAllOf :: AllOf EmptyType
+ Data.Type.Witness.Specific.Empty: emptyAllOf :: AllOf (EmptyType :: Type -> Type)
- Data.Type.Witness.Specific.Empty: newtype EmptyType t
+ Data.Type.Witness.Specific.Empty: newtype EmptyType (t :: k)
- Data.Type.Witness.Specific.FiniteAllFor: MkFiniteAllFor :: [Some w] -> (forall t. w t -> f t) -> FiniteAllFor f w
+ Data.Type.Witness.Specific.FiniteAllFor: MkFiniteAllFor :: [Some w] -> (forall (t :: k). () => w t -> f t) -> FiniteAllFor (f :: k -> Type) (w :: k -> Type)
- Data.Type.Witness.Specific.FiniteAllFor: [finiteDomain] :: FiniteAllFor f w -> [Some w]
+ Data.Type.Witness.Specific.FiniteAllFor: [finiteDomain] :: FiniteAllFor (f :: k -> Type) (w :: k -> Type) -> [Some w]
- Data.Type.Witness.Specific.FiniteAllFor: [finiteGetAllFor] :: FiniteAllFor f w -> forall t. w t -> f t
+ Data.Type.Witness.Specific.FiniteAllFor: [finiteGetAllFor] :: FiniteAllFor (f :: k -> Type) (w :: k -> Type) -> forall (t :: k). () => w t -> f t
- Data.Type.Witness.Specific.FiniteAllFor: data FiniteAllFor f w
+ Data.Type.Witness.Specific.FiniteAllFor: data FiniteAllFor (f :: k -> Type) (w :: k -> Type)
- Data.Type.Witness.Specific.FiniteAllFor: eitherFiniteAllFor :: FiniteAllFor t w1 -> FiniteAllFor t w2 -> FiniteAllFor t (EitherType w1 w2)
+ Data.Type.Witness.Specific.FiniteAllFor: eitherFiniteAllFor :: forall {k} (t :: k -> Type) (w1 :: k -> Type) (w2 :: k -> Type). FiniteAllFor t w1 -> FiniteAllFor t w2 -> FiniteAllFor t (EitherType w1 w2)
- Data.Type.Witness.Specific.FiniteAllFor: finiteAllFor :: FiniteAllFor f w -> AllFor f w
+ Data.Type.Witness.Specific.FiniteAllFor: finiteAllFor :: forall {k} (f :: k -> Type) (w :: k -> Type). FiniteAllFor f w -> AllFor f w
- Data.Type.Witness.Specific.FiniteAllFor: finiteCodomain :: FiniteAllFor f w -> [Some f]
+ Data.Type.Witness.Specific.FiniteAllFor: finiteCodomain :: forall {k} (f :: k -> Type) (w :: k -> Type). FiniteAllFor f w -> [Some f]
- Data.Type.Witness.Specific.FiniteAllFor: mapFiniteAllFor :: (forall t. f1 t -> f2 t) -> FiniteAllFor f1 w -> FiniteAllFor f2 w
+ Data.Type.Witness.Specific.FiniteAllFor: mapFiniteAllFor :: forall {k} f1 f2 (w :: k -> Type). (forall (t :: k). () => f1 t -> f2 t) -> FiniteAllFor f1 w -> FiniteAllFor f2 w
- Data.Type.Witness.Specific.FiniteAllFor: mkFiniteAllFor :: forall f w. FiniteWitness w => (forall t. w t -> f t) -> FiniteAllFor f w
+ Data.Type.Witness.Specific.FiniteAllFor: mkFiniteAllFor :: forall {k} f w. FiniteWitness w => (forall (t :: k). () => w t -> f t) -> FiniteAllFor f w
- Data.Type.Witness.Specific.FixedList: [ConsFixedList] :: a -> FixedList n a -> FixedList ('Succ n) a
+ Data.Type.Witness.Specific.FixedList: [ConsFixedList] :: forall a (n1 :: PeanoNat). a -> FixedList n1 a -> FixedList ('Succ n1) a
- Data.Type.Witness.Specific.FixedList: [NilFixedList] :: FixedList 'Zero a
+ Data.Type.Witness.Specific.FixedList: [NilFixedList] :: forall a. FixedList 'Zero a
- Data.Type.Witness.Specific.FixedList: data FixedList n a
+ Data.Type.Witness.Specific.FixedList: data FixedList (n :: PeanoNat) a
- Data.Type.Witness.Specific.FixedList: fixedFromList :: [a] -> (forall n. PeanoNatType n -> FixedList n a -> r) -> r
+ Data.Type.Witness.Specific.FixedList: fixedFromList :: [a] -> (forall (n :: PeanoNat). () => PeanoNatType n -> FixedList n a -> r) -> r
- Data.Type.Witness.Specific.FixedList: fixedListArrowSequence :: forall arrow n a b. Arrow arrow => FixedList n (arrow a b) -> arrow (FixedList n a) (FixedList n b)
+ Data.Type.Witness.Specific.FixedList: fixedListArrowSequence :: forall arrow (n :: PeanoNat) a b. Arrow arrow => FixedList n (arrow a b) -> arrow (FixedList n a) (FixedList n b)
- Data.Type.Witness.Specific.FixedList: fixedListArrowSequence_ :: forall arrow n a. Arrow arrow => FixedList n (arrow a ()) -> arrow (FixedList n a) ()
+ Data.Type.Witness.Specific.FixedList: fixedListArrowSequence_ :: forall arrow (n :: PeanoNat) a. Arrow arrow => FixedList n (arrow a ()) -> arrow (FixedList n a) ()
- Data.Type.Witness.Specific.FixedList: fixedListElement :: Some (Greater n) -> FixedList n a -> a
+ Data.Type.Witness.Specific.FixedList: fixedListElement :: forall (n :: PeanoNat) a. Some (Greater n) -> FixedList n a -> a
- Data.Type.Witness.Specific.FixedList: fixedListGenerate :: Applicative m => PeanoNatType n -> m a -> m (FixedList n a)
+ Data.Type.Witness.Specific.FixedList: fixedListGenerate :: forall m (n :: PeanoNat) a. Applicative m => PeanoNatType n -> m a -> m (FixedList n a)
- Data.Type.Witness.Specific.FixedList: fixedListLength :: FixedList n a -> PeanoNatType n
+ Data.Type.Witness.Specific.FixedList: fixedListLength :: forall (n :: PeanoNat) a. FixedList n a -> PeanoNatType n
- Data.Type.Witness.Specific.List.Element: [FirstElementType] :: ListElementType (t : tt) t
+ Data.Type.Witness.Specific.List.Element: [FirstElementType] :: forall {k} (t :: k) (tt :: [k]). ListElementType (t ': tt) t
- Data.Type.Witness.Specific.List.Element: [RestElementType] :: ListElementType aa t -> ListElementType (a : aa) t
+ Data.Type.Witness.Specific.List.Element: [RestElementType] :: forall {k} (aa :: [k]) (t :: k) (a :: k). ListElementType aa t -> ListElementType (a ': aa) t
- Data.Type.Witness.Specific.List.Element: countListType :: ListType w lt -> ListType (ListElementType lt) lt
+ Data.Type.Witness.Specific.List.Element: countListType :: forall {k} (w :: k -> Type) (lt :: [k]). ListType w lt -> ListType (ListElementType lt) lt
- Data.Type.Witness.Specific.List.Element: data ListElementType kk t
+ Data.Type.Witness.Specific.List.Element: data ListElementType (kk :: [k]) (t :: k)
- Data.Type.Witness.Specific.List.Element: indexListElementType :: ListType w lt -> Some (Greater (ListLength lt)) -> SomeFor w (ListElementType lt)
+ Data.Type.Witness.Specific.List.Element: indexListElementType :: forall {k} (w :: k -> Type) (lt :: [k]). ListType w lt -> Some (Greater (ListLength lt)) -> SomeFor w (ListElementType lt)
- Data.Type.Witness.Specific.List.Element: listElementTypeIndex :: Some (ListElementType lt) -> Some (Greater (ListLength lt))
+ Data.Type.Witness.Specific.List.Element: listElementTypeIndex :: forall {k} (lt :: [k]). Some (ListElementType lt) -> Some (Greater (ListLength lt))
- Data.Type.Witness.Specific.List.Element: lookUpListElement :: forall k (w :: k -> Type) (t :: k) (lt :: [k]). TestEquality w => w t -> ListType w lt -> Maybe (ListElementType lt t)
+ Data.Type.Witness.Specific.List.Element: lookUpListElement :: forall k w (t :: k) (lt :: [k]). TestEquality w => w t -> ListType w lt -> Maybe (ListElementType lt t)
- Data.Type.Witness.Specific.List.Element: pickListElement :: forall k (w :: k -> Type) (t :: k) (lt :: [k]). ListElementType lt t -> ListType w lt -> w t
+ Data.Type.Witness.Specific.List.Element: pickListElement :: forall k w (t :: k) (lt :: [k]). ListElementType lt t -> ListType w lt -> w t
- Data.Type.Witness.Specific.List.List: [ConsListType] :: w a -> ListType w lt -> ListType w (a : lt)
+ Data.Type.Witness.Specific.List.List: [ConsListType] :: forall {k} (w :: k -> Type) (a :: k) (lt1 :: [k]). w a -> ListType w lt1 -> ListType w (a ': lt1)
- Data.Type.Witness.Specific.List.List: [NilListType] :: ListType w '[]
+ Data.Type.Witness.Specific.List.List: [NilListType] :: forall {k} (w :: k -> Type). ListType w ('[] :: [k])
- Data.Type.Witness.Specific.List.List: assembleListType :: [Some w] -> Some (ListType w)
+ Data.Type.Witness.Specific.List.List: assembleListType :: forall {k} (w :: k -> Type). [Some w] -> Some (ListType w)
- Data.Type.Witness.Specific.List.List: data ListType w lt
+ Data.Type.Witness.Specific.List.List: data ListType (w :: k -> Type) (lt :: [k])
- Data.Type.Witness.Specific.List.List: joinListType :: (forall t'. wita t' -> witb t' -> witc t') -> ListType wita t -> ListType witb t -> ListType witc t
+ Data.Type.Witness.Specific.List.List: joinListType :: forall {k} wita witb witc (t :: [k]). (forall (t' :: k). () => wita t' -> witb t' -> witc t') -> ListType wita t -> ListType witb t -> ListType witc t
- Data.Type.Witness.Specific.List.List: joinMListType :: Applicative m => (forall t'. wita t' -> witb t' -> m (witc t')) -> ListType wita t -> ListType witb t -> m (ListType witc t)
+ Data.Type.Witness.Specific.List.List: joinMListType :: forall {k} m wita witb witc (t :: [k]). Applicative m => (forall (t' :: k). () => wita t' -> witb t' -> m (witc t')) -> ListType wita t -> ListType witb t -> m (ListType witc t)
- Data.Type.Witness.Specific.List.List: listTypeFind :: (forall a. w a -> Maybe r) -> ListType w tt -> Maybe r
+ Data.Type.Witness.Specific.List.List: listTypeFind :: forall {k} w r (tt :: [k]). (forall (a :: k). () => w a -> Maybe r) -> ListType w tt -> Maybe r
- Data.Type.Witness.Specific.List.List: listTypeFor :: Applicative m => ListType w1 t -> (forall a. w1 a -> m (w2 a)) -> m (ListType w2 t)
+ Data.Type.Witness.Specific.List.List: listTypeFor :: forall {k} m w1 (t :: [k]) w2. Applicative m => ListType w1 t -> (forall (a :: k). () => w1 a -> m (w2 a)) -> m (ListType w2 t)
- Data.Type.Witness.Specific.List.List: listTypeForList :: Applicative m => ListType w t -> (forall a. w a -> m r) -> m [r]
+ Data.Type.Witness.Specific.List.List: listTypeForList :: forall {k} m w (t :: [k]) r. Applicative m => ListType w t -> (forall (a :: k). () => w a -> m r) -> m [r]
- Data.Type.Witness.Specific.List.List: listTypeFor_ :: Applicative m => ListType w t -> (forall a. w a -> m ()) -> m ()
+ Data.Type.Witness.Specific.List.List: listTypeFor_ :: forall {k} m w (t :: [k]). Applicative m => ListType w t -> (forall (a :: k). () => w a -> m ()) -> m ()
- Data.Type.Witness.Specific.List.List: listTypeFromFixedList :: FixedList n (Some w) -> (forall t. n ~ ListLength t => ListType w t -> r) -> r
+ Data.Type.Witness.Specific.List.List: listTypeFromFixedList :: forall {k} (n :: PeanoNat) (w :: k -> Type) r. FixedList n (Some w) -> (forall (t :: [k]). n ~ ListLength t => ListType w t -> r) -> r
- Data.Type.Witness.Specific.List.List: listTypeLength :: ListType w lt -> Int
+ Data.Type.Witness.Specific.List.List: listTypeLength :: forall {k} (w :: k -> Type) (lt :: [k]). ListType w lt -> Int
- Data.Type.Witness.Specific.List.List: listTypeLengthType :: ListType w lt -> PeanoNatType (ListLength lt)
+ Data.Type.Witness.Specific.List.List: listTypeLengthType :: forall {k} (w :: k -> Type) (lt :: [k]). ListType w lt -> PeanoNatType (ListLength lt)
- Data.Type.Witness.Specific.List.List: listTypeToFixedList :: (forall a. w a -> r) -> ListType w t -> FixedList (ListLength t) r
+ Data.Type.Witness.Specific.List.List: listTypeToFixedList :: forall {k} w r (t :: [k]). (forall (a :: k). () => w a -> r) -> ListType w t -> FixedList (ListLength t) r
- Data.Type.Witness.Specific.List.List: listTypeToList :: (forall a. w a -> r) -> ListType w t -> [r]
+ Data.Type.Witness.Specific.List.List: listTypeToList :: forall {k} w r (t :: [k]). (forall (a :: k). () => w a -> r) -> ListType w t -> [r]
- Data.Type.Witness.Specific.List.List: listTypeToListM :: Applicative m => (forall a. w a -> m r) -> ListType w t -> m [r]
+ Data.Type.Witness.Specific.List.List: listTypeToListM :: forall {k} m w r (t :: [k]). Applicative m => (forall (a :: k). () => w a -> m r) -> ListType w t -> m [r]
- Data.Type.Witness.Specific.List.List: mapListType :: (forall t'. wita t' -> witb t') -> ListType wita t -> ListType witb t
+ Data.Type.Witness.Specific.List.List: mapListType :: forall {k} wita witb (t :: [k]). (forall (t' :: k). () => wita t' -> witb t') -> ListType wita t -> ListType witb t
- Data.Type.Witness.Specific.List.List: mapMListType :: Applicative m => (forall t'. wita t' -> m (witb t')) -> ListType wita t -> m (ListType witb t)
+ Data.Type.Witness.Specific.List.List: mapMListType :: forall {k} m wita witb (t :: [k]). Applicative m => (forall (t' :: k). () => wita t' -> m (witb t')) -> ListType wita t -> m (ListType witb t)
- Data.Type.Witness.Specific.List.List: pairListType :: ListType wita t -> ListType witb t -> ListType (PairType wita witb) t
+ Data.Type.Witness.Specific.List.List: pairListType :: forall {k} (wita :: k -> Type) (t :: [k]) (witb :: k -> Type). ListType wita t -> ListType witb t -> ListType (PairType wita witb) t
- Data.Type.Witness.Specific.List.Product: data ListProductType wit t
+ Data.Type.Witness.Specific.List.Product: data ListProductType (wit :: Type -> Type) t
- Data.Type.Witness.Specific.List.Product: fillListProduct :: ListType w t -> (forall a. w a -> a) -> ListProduct t
+ Data.Type.Witness.Specific.List.Product: fillListProduct :: forall w (t :: [Type]). ListType w t -> (forall a. () => w a -> a) -> ListProduct t
- Data.Type.Witness.Specific.List.Product: identityListProduct :: ListType Identity lt -> ListProduct lt
+ Data.Type.Witness.Specific.List.Product: identityListProduct :: forall (lt :: [Type]). ListType Identity lt -> ListProduct lt
- Data.Type.Witness.Specific.List.Product: lift2ListProduct :: ListType w t -> (forall a. w a -> a -> a -> a) -> ListProduct t -> ListProduct t -> ListProduct t
+ Data.Type.Witness.Specific.List.Product: lift2ListProduct :: forall w (t :: [Type]). ListType w t -> (forall a. () => w a -> a -> a -> a) -> ListProduct t -> ListProduct t -> ListProduct t
- Data.Type.Witness.Specific.List.Product: listProductEq :: (forall a. w a -> Dict (Eq a)) -> ListType w t -> Dict (Eq (ListProduct t))
+ Data.Type.Witness.Specific.List.Product: listProductEq :: forall w (t :: [Type]). (forall a. () => w a -> Dict (Eq a)) -> ListType w t -> Dict (Eq (ListProduct t))
- Data.Type.Witness.Specific.List.Product: listProductGetElement :: ListElementType list t -> ListProduct list -> t
+ Data.Type.Witness.Specific.List.Product: listProductGetElement :: forall (list :: [Type]) t. ListElementType list t -> ListProduct list -> t
- Data.Type.Witness.Specific.List.Product: listProductModifyElement :: ListElementType list t -> (t -> t) -> ListProduct list -> ListProduct list
+ Data.Type.Witness.Specific.List.Product: listProductModifyElement :: forall (list :: [Type]) t. ListElementType list t -> (t -> t) -> ListProduct list -> ListProduct list
- Data.Type.Witness.Specific.List.Product: listProductPutElement :: ListElementType list t -> t -> ListProduct list -> ListProduct list
+ Data.Type.Witness.Specific.List.Product: listProductPutElement :: forall (list :: [Type]) t. ListElementType list t -> t -> ListProduct list -> ListProduct list
- Data.Type.Witness.Specific.List.Product: listProductShow :: (forall a. w a -> Dict (Show a)) -> ListType w t -> Dict (Show (ListProduct t))
+ Data.Type.Witness.Specific.List.Product: listProductShow :: forall w (t :: [Type]). (forall a. () => w a -> Dict (Show a)) -> ListType w t -> Dict (Show (ListProduct t))
- Data.Type.Witness.Specific.List.Product: mapListProduct :: ListType w t -> (forall a. w a -> a -> a) -> ListProduct t -> ListProduct t
+ Data.Type.Witness.Specific.List.Product: mapListProduct :: forall w (t :: [Type]). ListType w t -> (forall a. () => w a -> a -> a) -> ListProduct t -> ListProduct t
- Data.Type.Witness.Specific.List.Product: sequenceListProduct :: Applicative f => ListType f lt -> f (ListProduct lt)
+ Data.Type.Witness.Specific.List.Product: sequenceListProduct :: forall f (lt :: [Type]). Applicative f => ListType f lt -> f (ListProduct lt)
- Data.Type.Witness.Specific.List.Product: type family ListProduct w = r | r -> w
+ Data.Type.Witness.Specific.List.Product: type family ListProduct (w :: [Type]) = (r :: Type) | r -> w
- Data.Type.Witness.Specific.List.Sum: data ListSumType wit t
+ Data.Type.Witness.Specific.List.Sum: data ListSumType (wit :: Type -> Type) t
- Data.Type.Witness.Specific.List.Sum: listSumEq :: (forall a. w a -> Dict (Eq a)) -> ListType w t -> Dict (Eq (ListSum t))
+ Data.Type.Witness.Specific.List.Sum: listSumEq :: forall w (t :: [Type]). (forall a. () => w a -> Dict (Eq a)) -> ListType w t -> Dict (Eq (ListSum t))
- Data.Type.Witness.Specific.List.Sum: listSumShow :: (forall a. w a -> Dict (Show a)) -> ListType w t -> Dict (Show (ListSum t))
+ Data.Type.Witness.Specific.List.Sum: listSumShow :: forall w (t :: [Type]). (forall a. () => w a -> Dict (Show a)) -> ListType w t -> Dict (Show (ListSum t))
- Data.Type.Witness.Specific.List.Sum: mapListSum :: ListType w t -> (forall a. w a -> a -> a) -> ListSum t -> ListSum t
+ Data.Type.Witness.Specific.List.Sum: mapListSum :: forall w (t :: [Type]). ListType w t -> (forall a. () => w a -> a -> a) -> ListSum t -> ListSum t
- Data.Type.Witness.Specific.List.Sum: type family ListSum w = r | r -> w
+ Data.Type.Witness.Specific.List.Sum: type family ListSum (w :: [Type]) = (r :: Type) | r -> w
- Data.Type.Witness.Specific.Natural: [MkNaturalType] :: KnownNat bn => NaturalType bn
+ Data.Type.Witness.Specific.Natural: [MkNaturalType] :: forall (bn :: Nat). KnownNat bn => NaturalType bn
- Data.Type.Witness.Specific.Natural: addNaturalType :: NaturalType a -> NaturalType b -> NaturalType (a + b)
+ Data.Type.Witness.Specific.Natural: addNaturalType :: forall (a :: Nat) (b :: Nat). NaturalType a -> NaturalType b -> NaturalType (a + b)
- Data.Type.Witness.Specific.Natural: data NaturalType bn
+ Data.Type.Witness.Specific.Natural: data NaturalType (bn :: Nat)
- Data.Type.Witness.Specific.Natural: multiplyNaturalType :: NaturalType a -> NaturalType b -> NaturalType (a * b)
+ Data.Type.Witness.Specific.Natural: multiplyNaturalType :: forall (a :: Nat) (b :: Nat). NaturalType a -> NaturalType b -> NaturalType (a * b)
- Data.Type.Witness.Specific.Natural: peanoToNaturalType :: PeanoNatType pn -> NaturalType (PeanoToNatural pn)
+ Data.Type.Witness.Specific.Natural: peanoToNaturalType :: forall (pn :: PeanoNat). PeanoNatType pn -> NaturalType (PeanoToNatural pn)
- Data.Type.Witness.Specific.Natural: succNaturalType :: NaturalType a -> NaturalType (a + 1)
+ Data.Type.Witness.Specific.Natural: succNaturalType :: forall (a :: Nat). NaturalType a -> NaturalType (a + 1)
- Data.Type.Witness.Specific.Natural: type (x :: k) <= (y :: k) = x <=? y ~ 'True
+ Data.Type.Witness.Specific.Natural: type (x :: t) <= (y :: t) = Assert x <=? y LeErrMsg x y :: Constraint
- Data.Type.Witness.Specific.Natural: type family PeanoToNatural pn
+ Data.Type.Witness.Specific.Natural: type family PeanoToNatural (pn :: PeanoNat) :: Nat
- Data.Type.Witness.Specific.OrderedWitnessMap.For: MkOrderedWitnessMapFor :: Map (Some w) (SomeFor f w) -> OrderedWitnessMapFor f w
+ Data.Type.Witness.Specific.OrderedWitnessMap.For: MkOrderedWitnessMapFor :: Map (Some w) (SomeFor f w) -> OrderedWitnessMapFor (f :: k -> Type) (w :: k -> Type)
- Data.Type.Witness.Specific.OrderedWitnessMap.For: emptyOrderedWitnessMapFor :: TestOrder w => OrderedWitnessMapFor f w
+ Data.Type.Witness.Specific.OrderedWitnessMap.For: emptyOrderedWitnessMapFor :: forall {k} (w :: k -> Type) (f :: k -> Type). TestOrder w => OrderedWitnessMapFor f w
- Data.Type.Witness.Specific.OrderedWitnessMap.For: newtype OrderedWitnessMapFor f w
+ Data.Type.Witness.Specific.OrderedWitnessMap.For: newtype OrderedWitnessMapFor (f :: k -> Type) (w :: k -> Type)
- Data.Type.Witness.Specific.OrderedWitnessMap.For: orderedWitnessMapForAdd :: TestOrder w => w a -> f a -> OrderedWitnessMapFor f w -> OrderedWitnessMapFor f w
+ Data.Type.Witness.Specific.OrderedWitnessMap.For: orderedWitnessMapForAdd :: forall {k} w (a :: k) f. TestOrder w => w a -> f a -> OrderedWitnessMapFor f w -> OrderedWitnessMapFor f w
- Data.Type.Witness.Specific.OrderedWitnessMap.For: orderedWitnessMapForFold :: Monoid m => OrderedWitnessMapFor f w -> (forall a. w a -> f a -> m) -> m
+ Data.Type.Witness.Specific.OrderedWitnessMap.For: orderedWitnessMapForFold :: forall {k} m f w. Monoid m => OrderedWitnessMapFor f w -> (forall (a :: k). () => w a -> f a -> m) -> m
- Data.Type.Witness.Specific.OrderedWitnessMap.For: orderedWitnessMapForFromList :: TestOrder w => [SomeFor f w] -> OrderedWitnessMapFor f w
+ Data.Type.Witness.Specific.OrderedWitnessMap.For: orderedWitnessMapForFromList :: forall {k} (w :: k -> Type) (f :: k -> Type). TestOrder w => [SomeFor f w] -> OrderedWitnessMapFor f w
- Data.Type.Witness.Specific.OrderedWitnessMap.For: orderedWitnessMapForLookup :: TestOrder w => w a -> OrderedWitnessMapFor f w -> Maybe (f a)
+ Data.Type.Witness.Specific.OrderedWitnessMap.For: orderedWitnessMapForLookup :: forall {k} w (a :: k) f. TestOrder w => w a -> OrderedWitnessMapFor f w -> Maybe (f a)
- Data.Type.Witness.Specific.OrderedWitnessMap.For: orderedWitnessMapForMapM :: Applicative m => (forall a. f a -> m (g a)) -> OrderedWitnessMapFor f w -> m (OrderedWitnessMapFor g w)
+ Data.Type.Witness.Specific.OrderedWitnessMap.For: orderedWitnessMapForMapM :: forall {k} m f g (w :: k -> Type). Applicative m => (forall (a :: k). () => f a -> m (g a)) -> OrderedWitnessMapFor f w -> m (OrderedWitnessMapFor g w)
- Data.Type.Witness.Specific.OrderedWitnessMap.For: orderedWitnessMapForModify :: forall f w a. TestOrder w => w a -> (f a -> f a) -> OrderedWitnessMapFor f w -> OrderedWitnessMapFor f w
+ Data.Type.Witness.Specific.OrderedWitnessMap.For: orderedWitnessMapForModify :: forall {k} f w (a :: k). TestOrder w => w a -> (f a -> f a) -> OrderedWitnessMapFor f w -> OrderedWitnessMapFor f w
- Data.Type.Witness.Specific.OrderedWitnessMap.For: orderedWitnessMapForRemove :: TestOrder w => w a -> OrderedWitnessMapFor f w -> OrderedWitnessMapFor f w
+ Data.Type.Witness.Specific.OrderedWitnessMap.For: orderedWitnessMapForRemove :: forall {k} w (a :: k) (f :: k -> Type). TestOrder w => w a -> OrderedWitnessMapFor f w -> OrderedWitnessMapFor f w
- Data.Type.Witness.Specific.OrderedWitnessMap.For: orderedWitnessMapForReplace :: TestOrder w => w a -> f a -> OrderedWitnessMapFor f w -> OrderedWitnessMapFor f w
+ Data.Type.Witness.Specific.OrderedWitnessMap.For: orderedWitnessMapForReplace :: forall {k} w (a :: k) f. TestOrder w => w a -> f a -> OrderedWitnessMapFor f w -> OrderedWitnessMapFor f w
- Data.Type.Witness.Specific.OrderedWitnessMap.For: orderedWitnessMapForSingle :: w a -> f a -> OrderedWitnessMapFor f w
+ Data.Type.Witness.Specific.OrderedWitnessMap.For: orderedWitnessMapForSingle :: forall {k} w (a :: k) f. w a -> f a -> OrderedWitnessMapFor f w
- Data.Type.Witness.Specific.OrderedWitnessMap.For: orderedWitnessMapForToList :: OrderedWitnessMapFor f w -> [SomeFor f w]
+ Data.Type.Witness.Specific.OrderedWitnessMap.For: orderedWitnessMapForToList :: forall {k} (f :: k -> Type) (w :: k -> Type). OrderedWitnessMapFor f w -> [SomeFor f w]
- Data.Type.Witness.Specific.OrderedWitnessMap.Of: emptyOrderedWitnessMapOf :: TestOrder w => OrderedWitnessMapOf w
+ Data.Type.Witness.Specific.OrderedWitnessMap.Of: emptyOrderedWitnessMapOf :: forall (w :: Type -> Type). TestOrder w => OrderedWitnessMapOf w
- Data.Type.Witness.Specific.OrderedWitnessMap.Of: orderedWitnessMapOfFold :: Monoid m => OrderedWitnessMapOf w -> (forall a. w a -> a -> m) -> m
+ Data.Type.Witness.Specific.OrderedWitnessMap.Of: orderedWitnessMapOfFold :: Monoid m => OrderedWitnessMapOf w -> (forall a. () => w a -> a -> m) -> m
- Data.Type.Witness.Specific.OrderedWitnessMap.Of: orderedWitnessMapOfFromList :: TestOrder w => [SomeOf w] -> OrderedWitnessMapOf w
+ Data.Type.Witness.Specific.OrderedWitnessMap.Of: orderedWitnessMapOfFromList :: forall (w :: Type -> Type). TestOrder w => [SomeOf w] -> OrderedWitnessMapOf w
- Data.Type.Witness.Specific.OrderedWitnessMap.Of: orderedWitnessMapOfToList :: OrderedWitnessMapOf w -> [SomeOf w]
+ Data.Type.Witness.Specific.OrderedWitnessMap.Of: orderedWitnessMapOfToList :: forall (w :: Type -> Type). OrderedWitnessMapOf w -> [SomeOf w]
- Data.Type.Witness.Specific.Pair: MkPairType :: w1 t -> w2 t -> PairType w1 w2 t
+ Data.Type.Witness.Specific.Pair: MkPairType :: w1 t -> w2 t -> PairType (w1 :: k -> Type) (w2 :: k -> Type) (t :: k)
- Data.Type.Witness.Specific.Pair: data PairType w1 w2 t
+ Data.Type.Witness.Specific.Pair: data PairType (w1 :: k -> Type) (w2 :: k -> Type) (t :: k)
- Data.Type.Witness.Specific.PeanoNat: [MkGreater] :: GreaterEqual a b -> Greater ('Succ a) b
+ Data.Type.Witness.Specific.PeanoNat: [MkGreater] :: forall (a1 :: PeanoNat) (b :: PeanoNat). GreaterEqual a1 b -> Greater ('Succ a1) b
- Data.Type.Witness.Specific.PeanoNat: [SuccGreaterEqual] :: GreaterEqual a b -> GreaterEqual ('Succ a) ('Succ b)
+ Data.Type.Witness.Specific.PeanoNat: [SuccGreaterEqual] :: forall (a1 :: PeanoNat) (b1 :: PeanoNat). GreaterEqual a1 b1 -> GreaterEqual ('Succ a1) ('Succ b1)
- Data.Type.Witness.Specific.PeanoNat: [SuccType] :: PeanoNatType t -> PeanoNatType ('Succ t)
+ Data.Type.Witness.Specific.PeanoNat: [SuccType] :: forall (t1 :: PeanoNat). PeanoNatType t1 -> PeanoNatType ('Succ t1)
- Data.Type.Witness.Specific.PeanoNat: [ZeroGreaterEqual] :: GreaterEqual a 'Zero
+ Data.Type.Witness.Specific.PeanoNat: [ZeroGreaterEqual] :: forall (a :: PeanoNat). GreaterEqual a 'Zero
- Data.Type.Witness.Specific.PeanoNat: addPeanoNatType :: PeanoNatType a -> PeanoNatType b -> PeanoNatType (Add a b)
+ Data.Type.Witness.Specific.PeanoNat: addPeanoNatType :: forall (a :: PeanoNat) (b :: PeanoNat). PeanoNatType a -> PeanoNatType b -> PeanoNatType (Add a b)
- Data.Type.Witness.Specific.PeanoNat: addPeanoNatTypeGE :: PeanoNatType a -> PeanoNatType b -> GreaterEqual (Add a b) a
+ Data.Type.Witness.Specific.PeanoNat: addPeanoNatTypeGE :: forall (a :: PeanoNat) (b :: PeanoNat). PeanoNatType a -> PeanoNatType b -> GreaterEqual (Add a b) a
- Data.Type.Witness.Specific.PeanoNat: addZeroPeanoNatTypeEqual :: PeanoNatType a -> Add a 'Zero :~: a
+ Data.Type.Witness.Specific.PeanoNat: addZeroPeanoNatTypeEqual :: forall (a :: PeanoNat). PeanoNatType a -> Add a 'Zero :~: a
- Data.Type.Witness.Specific.PeanoNat: data Greater a b
+ Data.Type.Witness.Specific.PeanoNat: data Greater (a :: PeanoNat) (b :: PeanoNat)
- Data.Type.Witness.Specific.PeanoNat: data GreaterEqual a b
+ Data.Type.Witness.Specific.PeanoNat: data GreaterEqual (a :: PeanoNat) (b :: PeanoNat)
- Data.Type.Witness.Specific.PeanoNat: data PeanoNatType t
+ Data.Type.Witness.Specific.PeanoNat: data PeanoNatType (t :: PeanoNat)
- Data.Type.Witness.Specific.PeanoNat: diff1GreaterEqual :: GreaterEqual a b -> GreaterEqual ('Succ a) b
+ Data.Type.Witness.Specific.PeanoNat: diff1GreaterEqual :: forall (a :: PeanoNat) (b :: PeanoNat). GreaterEqual a b -> GreaterEqual ('Succ a) b
- Data.Type.Witness.Specific.PeanoNat: greaterEqualIndex :: GreaterEqual a b -> PeanoNatType b
+ Data.Type.Witness.Specific.PeanoNat: greaterEqualIndex :: forall (a :: PeanoNat) (b :: PeanoNat). GreaterEqual a b -> PeanoNatType b
- Data.Type.Witness.Specific.PeanoNat: greaterIndex :: Greater a b -> PeanoNatType b
+ Data.Type.Witness.Specific.PeanoNat: greaterIndex :: forall (a :: PeanoNat) (b :: PeanoNat). Greater a b -> PeanoNatType b
- Data.Type.Witness.Specific.PeanoNat: peanoGreater :: PeanoNatType a -> PeanoNatType b -> Maybe (Greater a b)
+ Data.Type.Witness.Specific.PeanoNat: peanoGreater :: forall (a :: PeanoNat) (b :: PeanoNat). PeanoNatType a -> PeanoNatType b -> Maybe (Greater a b)
- Data.Type.Witness.Specific.PeanoNat: peanoGreaterEqual :: PeanoNatType a -> PeanoNatType b -> Maybe (GreaterEqual a b)
+ Data.Type.Witness.Specific.PeanoNat: peanoGreaterEqual :: forall (a :: PeanoNat) (b :: PeanoNat). PeanoNatType a -> PeanoNatType b -> Maybe (GreaterEqual a b)
- Data.Type.Witness.Specific.PeanoNat: samePeanoGreaterEqual :: PeanoNatType a -> GreaterEqual a a
+ Data.Type.Witness.Specific.PeanoNat: samePeanoGreaterEqual :: forall (a :: PeanoNat). PeanoNatType a -> GreaterEqual a a
- Data.Type.Witness.Specific.PeanoNat: succAddPeanoNatTypeEqual :: forall a b. PeanoNatType a -> PeanoNatType b -> 'Succ (Add a b) :~: Add a ('Succ b)
+ Data.Type.Witness.Specific.PeanoNat: succAddPeanoNatTypeEqual :: forall (a :: PeanoNat) (b :: PeanoNat). PeanoNatType a -> PeanoNatType b -> 'Succ (Add a b) :~: Add a ('Succ b)
- Data.Type.Witness.Specific.PeanoNat: succAddPeanoNatTypeEqual' :: forall a b. PeanoNatType a -> 'Succ (Add a b) :~: Add a ('Succ b)
+ Data.Type.Witness.Specific.PeanoNat: succAddPeanoNatTypeEqual' :: forall (a :: PeanoNat) (b :: PeanoNat). PeanoNatType a -> 'Succ (Add a b) :~: Add a ('Succ b)
- Data.Type.Witness.Specific.Single: type SingleType = (:~:)
+ Data.Type.Witness.Specific.Single: type SingleType = (:~:) :: k -> k -> Type
- Data.Type.Witness.Specific.Some: MkSomeFor :: w a -> f a -> SomeFor f w
+ Data.Type.Witness.Specific.Some: MkSomeFor :: w a -> f a -> SomeFor (f :: k -> Type) (w :: k -> Type)
- Data.Type.Witness.Specific.Some: data SomeFor f w
+ Data.Type.Witness.Specific.Some: data SomeFor (f :: k -> Type) (w :: k -> Type)
- Data.Type.Witness.Specific.Some: mapSome :: forall k (g :: k -> Type) (w1 :: k -> Type) (w2 :: k -> Type). (forall t. w1 t -> w2 t) -> SomeFor g w1 -> SomeFor g w2
+ Data.Type.Witness.Specific.Some: mapSome :: forall k (g :: k -> Type) w1 w2. (forall (t :: k). () => w1 t -> w2 t) -> SomeFor g w1 -> SomeFor g w2
- Data.Type.Witness.Specific.Some: matchSome :: forall k (w :: k -> Type) (a :: k). TestEquality w => w a -> Some w -> Bool
+ Data.Type.Witness.Specific.Some: matchSome :: forall k w (a :: k). TestEquality w => w a -> Some w -> Bool
- Data.Type.Witness.Specific.Some: matchSomeFor :: TestEquality w => w a -> SomeFor f w -> Maybe (f a)
+ Data.Type.Witness.Specific.Some: matchSomeFor :: forall {k} w (a :: k) f. TestEquality w => w a -> SomeFor f w -> Maybe (f a)
- Data.Type.Witness.Specific.Some: matchSomeOf :: forall (w :: Type -> Type) (a :: Type). TestEquality w => w a -> SomeOf w -> Maybe a
+ Data.Type.Witness.Specific.Some: matchSomeOf :: TestEquality w => w a -> SomeOf w -> Maybe a
- Data.Type.Witness.Specific.Some: someForToSome :: SomeFor f w -> Some w
+ Data.Type.Witness.Specific.Some: someForToSome :: forall {k} (f :: k -> Type) (w :: k -> Type). SomeFor f w -> Some w
- Data.Type.Witness.Specific.Some: type Some = SomeFor (Const ())
+ Data.Type.Witness.Specific.Some: type Some = SomeFor Const () :: k -> Type
- Data.Type.Witness.Specific.Some: withSomeAllConstraint :: forall k (c :: Type -> Constraint) (w :: k -> Type) (r :: Type). AllConstraint c w => Some w -> (forall a. c (w a) => w a -> r) -> r
+ Data.Type.Witness.Specific.Some: withSomeAllConstraint :: AllConstraint c w => Some w -> (forall (a :: k). c (w a) => w a -> r) -> r
- Data.Type.Witness.Specific.Symbol: [MkSymbolType] :: KnownSymbol symbol => SymbolType symbol
+ Data.Type.Witness.Specific.Symbol: [MkSymbolType] :: forall (symbol :: Symbol). KnownSymbol symbol => SymbolType symbol
- Data.Type.Witness.Specific.Symbol: data SymbolType symbol
+ Data.Type.Witness.Specific.Symbol: data SymbolType (symbol :: Symbol)
- Data.Type.Witness.Specific.WitnessMap.For: MkWitnessMapFor :: [SomeFor f w] -> WitnessMapFor f w
+ Data.Type.Witness.Specific.WitnessMap.For: MkWitnessMapFor :: [SomeFor f w] -> WitnessMapFor (f :: k -> Type) (w :: k -> Type)
- Data.Type.Witness.Specific.WitnessMap.For: [witnessMapForToList] :: WitnessMapFor f w -> [SomeFor f w]
+ Data.Type.Witness.Specific.WitnessMap.For: [witnessMapForToList] :: WitnessMapFor (f :: k -> Type) (w :: k -> Type) -> [SomeFor f w]
- Data.Type.Witness.Specific.WitnessMap.For: emptyWitnessMapFor :: WitnessMapFor f w
+ Data.Type.Witness.Specific.WitnessMap.For: emptyWitnessMapFor :: forall {k} (f :: k -> Type) (w :: k -> Type). WitnessMapFor f w
- Data.Type.Witness.Specific.WitnessMap.For: newtype WitnessMapFor f w
+ Data.Type.Witness.Specific.WitnessMap.For: newtype WitnessMapFor (f :: k -> Type) (w :: k -> Type)
- Data.Type.Witness.Specific.WitnessMap.For: witnessMapForAdd :: w a -> f a -> WitnessMapFor f w -> WitnessMapFor f w
+ Data.Type.Witness.Specific.WitnessMap.For: witnessMapForAdd :: forall {k} w (a :: k) f. w a -> f a -> WitnessMapFor f w -> WitnessMapFor f w
- Data.Type.Witness.Specific.WitnessMap.For: witnessMapForFold :: Monoid m => WitnessMapFor f w -> (forall a. w a -> f a -> m) -> m
+ Data.Type.Witness.Specific.WitnessMap.For: witnessMapForFold :: forall {k} m f w. Monoid m => WitnessMapFor f w -> (forall (a :: k). () => w a -> f a -> m) -> m
- Data.Type.Witness.Specific.WitnessMap.For: witnessMapForFromList :: [SomeFor f w] -> WitnessMapFor f w
+ Data.Type.Witness.Specific.WitnessMap.For: witnessMapForFromList :: forall {k} (f :: k -> Type) (w :: k -> Type). [SomeFor f w] -> WitnessMapFor f w
- Data.Type.Witness.Specific.WitnessMap.For: witnessMapForLookup :: TestEquality w => w a -> WitnessMapFor f w -> Maybe (f a)
+ Data.Type.Witness.Specific.WitnessMap.For: witnessMapForLookup :: forall {k} w (a :: k) f. TestEquality w => w a -> WitnessMapFor f w -> Maybe (f a)
- Data.Type.Witness.Specific.WitnessMap.For: witnessMapForMapM :: Applicative m => (forall a. f a -> m (g a)) -> WitnessMapFor f w -> m (WitnessMapFor g w)
+ Data.Type.Witness.Specific.WitnessMap.For: witnessMapForMapM :: forall {k} m f g (w :: k -> Type). Applicative m => (forall (a :: k). () => f a -> m (g a)) -> WitnessMapFor f w -> m (WitnessMapFor g w)
- Data.Type.Witness.Specific.WitnessMap.For: witnessMapForModify :: TestEquality w => w a -> (f a -> f a) -> WitnessMapFor f w -> WitnessMapFor f w
+ Data.Type.Witness.Specific.WitnessMap.For: witnessMapForModify :: forall {k} w (a :: k) f. TestEquality w => w a -> (f a -> f a) -> WitnessMapFor f w -> WitnessMapFor f w
- Data.Type.Witness.Specific.WitnessMap.For: witnessMapForRemove :: TestEquality w => w a -> WitnessMapFor f w -> WitnessMapFor f w
+ Data.Type.Witness.Specific.WitnessMap.For: witnessMapForRemove :: forall {k} w (a :: k) (f :: k -> Type). TestEquality w => w a -> WitnessMapFor f w -> WitnessMapFor f w
- Data.Type.Witness.Specific.WitnessMap.For: witnessMapForReplace :: TestEquality w => w a -> f a -> WitnessMapFor f w -> WitnessMapFor f w
+ Data.Type.Witness.Specific.WitnessMap.For: witnessMapForReplace :: forall {k} w (a :: k) f. TestEquality w => w a -> f a -> WitnessMapFor f w -> WitnessMapFor f w
- Data.Type.Witness.Specific.WitnessMap.For: witnessMapForSingle :: w a -> f a -> WitnessMapFor f w
+ Data.Type.Witness.Specific.WitnessMap.For: witnessMapForSingle :: forall {k} w (a :: k) f. w a -> f a -> WitnessMapFor f w
- Data.Type.Witness.Specific.WitnessMap.Of: emptyWitnessMapOf :: WitnessMapOf w
+ Data.Type.Witness.Specific.WitnessMap.Of: emptyWitnessMapOf :: forall (w :: Type -> Type). WitnessMapOf w
- Data.Type.Witness.Specific.WitnessMap.Of: witnessMapOfFold :: Monoid m => WitnessMapOf w -> (forall a. w a -> a -> m) -> m
+ Data.Type.Witness.Specific.WitnessMap.Of: witnessMapOfFold :: Monoid m => WitnessMapOf w -> (forall a. () => w a -> a -> m) -> m
- Data.Type.Witness.Specific.WitnessMap.Of: witnessMapOfFromList :: [SomeOf w] -> WitnessMapOf w
+ Data.Type.Witness.Specific.WitnessMap.Of: witnessMapOfFromList :: forall (w :: Type -> Type). [SomeOf w] -> WitnessMapOf w
- Data.Type.Witness.Specific.WitnessMap.Of: witnessMapOfToList :: WitnessMapOf w -> [SomeOf w]
+ Data.Type.Witness.Specific.WitnessMap.Of: witnessMapOfToList :: forall (w :: Type -> Type). WitnessMapOf w -> [SomeOf w]
Files
- changelog.md +6/−0
- src/Data/PeanoNat.hs +1/−1
- src/Data/Type/Witness/General/HetConstraint.hs +1/−0
- src/Data/Type/Witness/General/Order.hs +1/−0
- src/Data/Type/Witness/General/TestHetEquality.hs +1/−0
- src/Data/Type/Witness/Specific/All.hs +5/−0
- src/Data/Type/Witness/Specific/Either.hs +2/−1
- src/Data/Type/Witness/Specific/Empty.hs +2/−1
- src/Data/Type/Witness/Specific/FiniteAllFor.hs +1/−0
- src/Data/Type/Witness/Specific/FixedList.hs +1/−0
- src/Data/Type/Witness/Specific/List/Element.hs +3/−2
- src/Data/Type/Witness/Specific/List/List.hs +7/−2
- src/Data/Type/Witness/Specific/List/Product.hs +28/−1
- src/Data/Type/Witness/Specific/List/Sum.hs +4/−1
- src/Data/Type/Witness/Specific/Natural.hs +1/−0
- src/Data/Type/Witness/Specific/OrderedWitnessMap/For.hs +3/−2
- src/Data/Type/Witness/Specific/Pair.hs +1/−0
- src/Data/Type/Witness/Specific/PeanoNat.hs +3/−0
- src/Data/Type/Witness/Specific/Some.hs +2/−1
- src/Data/Type/Witness/Specific/Symbol.hs +1/−0
- src/Data/Type/Witness/Specific/WitnessMap/For.hs +2/−1
- witness.cabal +20/−32
changelog.md view
@@ -1,3 +1,9 @@+## [0.7] - UNRELEASED+- listProductSequence, matchListProduct+- sequenceComposeListType+- mapAllFor+- fix for GHC 9.10+ ## [0.6.2] - 2023-07-25 - withAllConstraint, withSomeAllConstraint - listTypeToListM, listTypeForList, listTypeFind
src/Data/PeanoNat.hs view
@@ -43,4 +43,4 @@ type ListLength :: forall k. [k] -> PeanoNat type family ListLength l where ListLength '[] = 'Zero- ListLength (a ': aa) = 'Succ (ListLength aa)+ ListLength (_ ': aa) = 'Succ (ListLength aa)
src/Data/Type/Witness/General/HetConstraint.hs view
@@ -3,6 +3,7 @@ import Import type HetConstraintWitness :: forall k1. (k1 -> Constraint) -> forall k2. k2 -> Type+type role HetConstraintWitness representational nominal data HetConstraintWitness c t where MkHetConstraintWitness :: forall k (c :: k -> Constraint) (t :: k). c t
src/Data/Type/Witness/General/Order.hs view
@@ -2,6 +2,7 @@ import Import +type role WOrdering nominal nominal data WOrdering (a :: k) (b :: k) where WLT :: forall k (a :: k) (b :: k). WOrdering a b WEQ :: forall k (a :: k). WOrdering a a
src/Data/Type/Witness/General/TestHetEquality.hs view
@@ -20,6 +20,7 @@ -- | Equivalent to ':~~:', but can be made an instance of 'TestHetEquality' type HetEqual :: forall ka. ka -> forall kb. kb -> Type+type role HetEqual nominal nominal data HetEqual a b where HetRefl :: forall k (a :: k). HetEqual a a
src/Data/Type/Witness/Specific/All.hs view
@@ -5,11 +5,16 @@ import Import type AllFor :: forall k. (k -> Type) -> (k -> Type) -> Type+type role AllFor representational representational newtype AllFor f w = MkAllFor { unAllFor :: forall t. w t -> f t } +mapAllFor :: (forall a. f1 a -> f2 a) -> AllFor f1 w -> AllFor f2 w+mapAllFor ff (MkAllFor wtft) = MkAllFor $ ff . wtft+ type AllOf :: (Type -> Type) -> Type+type role AllOf representational newtype AllOf w = MkAllOf { unAllOf :: forall t. w t -> t }
src/Data/Type/Witness/Specific/Either.hs view
@@ -10,6 +10,7 @@ import Import type EitherType :: forall k. (k -> Type) -> (k -> Type) -> (k -> Type)+type role EitherType representational representational nominal data EitherType w1 w2 t = LeftType (w1 t) | RightType (w2 t)@@ -71,7 +72,7 @@ type ConsType a = EitherType (SingleType a) instance ListElementWitness lt => ListElementWitness (ConsType a lt) where- type WitnessTypeList (ConsType a lt) = a : (WitnessTypeList lt)+ type WitnessTypeList (ConsType a lt) = a ': (WitnessTypeList lt) toListElementWitness (LeftType Refl) = FirstElementType toListElementWitness (RightType sel) = RestElementType $ toListElementWitness sel fromListElementWitness FirstElementType = LeftType Refl
src/Data/Type/Witness/Specific/Empty.hs view
@@ -9,9 +9,10 @@ import Import type EmptyType :: forall k. k -> Type+type role EmptyType phantom newtype EmptyType t = MkEmptyType Void- deriving (Eq, Countable, Searchable, Empty)+ deriving newtype (Eq, Countable, Searchable, Empty) instance Finite (EmptyType t) where allValues = []
src/Data/Type/Witness/Specific/FiniteAllFor.hs view
@@ -7,6 +7,7 @@ import Import type FiniteAllFor :: forall k. (k -> Type) -> (k -> Type) -> Type+type role FiniteAllFor representational representational data FiniteAllFor f w = MkFiniteAllFor { finiteDomain :: [Some w] , finiteGetAllFor :: forall t. w t -> f t
src/Data/Type/Witness/Specific/FixedList.hs view
@@ -7,6 +7,7 @@ import Import type FixedList :: PeanoNat -> Type -> Type+type role FixedList nominal representational data FixedList n a where NilFixedList :: FixedList 'Zero a ConsFixedList :: a -> FixedList n a -> FixedList ('Succ n) a
src/Data/Type/Witness/Specific/List/Element.hs view
@@ -8,9 +8,10 @@ import Import type ListElementType :: forall k. [k] -> k -> Type+type role ListElementType nominal nominal data ListElementType kk t where- FirstElementType :: ListElementType (t : tt) t- RestElementType :: ListElementType aa t -> ListElementType (a : aa) t+ FirstElementType :: ListElementType (t ': tt) t+ RestElementType :: ListElementType aa t -> ListElementType (a ': aa) t instance TestEquality (ListElementType tt) where testEquality FirstElementType FirstElementType = Just Refl
src/Data/Type/Witness/Specific/List/List.hs view
@@ -11,9 +11,10 @@ -- | a witness type for lists of types -- The @w@ parameter is the witness type of the elements. type ListType :: (k -> Type) -> ([k] -> Type)+type role ListType representational nominal data ListType w lt where NilListType :: ListType w '[]- ConsListType :: w a -> ListType w lt -> ListType w (a : lt)+ ConsListType :: w a -> ListType w lt -> ListType w (a ': lt) instance Representative w => Representative (ListType w) where getRepWitness NilListType = Dict@@ -24,7 +25,7 @@ instance Representative w => Is (ListType w) '[] where representative = NilListType -instance (Is w a, Is (ListType w) lt) => Is (ListType w) (a : lt) where+instance (Is w a, Is (ListType w) lt) => Is (ListType w) (a ': lt) where representative = ConsListType representative representative instance TestEquality w => TestEquality (ListType w) where@@ -111,3 +112,7 @@ case f a of Just r -> Just r Nothing -> listTypeFind f aa++sequenceComposeListType :: Applicative f => ListType (Compose f w) lt -> f (ListType w lt)+sequenceComposeListType NilListType = pure NilListType+sequenceComposeListType (ConsListType (Compose fwa) tt) = liftA2 ConsListType fwa $ sequenceComposeListType tt
src/Data/Type/Witness/Specific/List/Product.hs view
@@ -1,16 +1,19 @@+{-# OPTIONS -Wno-redundant-constraints #-}+ module Data.Type.Witness.Specific.List.Product where import Data.Type.Witness.General.Representative import Data.Type.Witness.General.WitnessConstraint import Data.Type.Witness.Specific.List.Element import Data.Type.Witness.Specific.List.List+import Data.Type.Witness.Specific.Some import Import import Unsafe.Coerce type ListProduct :: [Type] -> Type type family ListProduct w = r | r -> w where ListProduct '[] = ()- ListProduct (t : tt) = (t, ListProduct tt)+ ListProduct (t ': tt) = (t, ListProduct tt) -- | workaround for https://gitlab.haskell.org/ghc/ghc/issues/10833 injectiveListProduct ::@@ -61,7 +64,31 @@ listProductModifyElement :: ListElementType list t -> (t -> t) -> ListProduct list -> ListProduct list listProductModifyElement n aa t = listProductPutElement n (aa (listProductGetElement n t)) t +listProductSequence ::+ forall f list. Applicative f+ => ListType f list+ -> f (ListProduct list)+listProductSequence NilListType = pure ()+listProductSequence (ConsListType t tt) = liftA2 (,) t $ listProductSequence tt++pickListProduct :: TestEquality w => ListType w lta -> w b -> Maybe (ListProduct lta -> b)+pickListProduct NilListType _ = Nothing+pickListProduct (ConsListType wa _) wb+ | Just Refl <- testEquality wa wb = Just fst+pickListProduct (ConsListType _ la) wb = fmap (\f -> f . snd) $ pickListProduct la wb++matchListProduct ::+ TestEquality w => ListType w lta -> ListType w ltb -> Either (Some w) (ListProduct lta -> ListProduct ltb)+matchListProduct _ NilListType = return $ \_ -> ()+matchListProduct la (ConsListType wb lb) =+ case pickListProduct la wb of+ Nothing -> Left $ MkSome wb+ Just f1 -> do+ fr <- matchListProduct la lb+ return $ \pa -> (f1 pa, fr pa)+ type ListProductType :: (Type -> Type) -> (Type -> Type)+type role ListProductType representational nominal data ListProductType wit t where MkListProductType :: forall (wit :: Type -> Type) (lt :: [Type]). ListType wit lt -> ListProductType wit (ListProduct lt)
src/Data/Type/Witness/Specific/List/Sum.hs view
@@ -1,3 +1,5 @@+{-# OPTIONS -Wno-redundant-constraints #-}+ module Data.Type.Witness.Specific.List.Sum where import Data.Type.Witness.General.Representative@@ -9,7 +11,7 @@ type ListSum :: [Type] -> Type type family ListSum w = r | r -> w where ListSum '[] = Void- ListSum (t : tt) = Either t (ListSum tt)+ ListSum (t ': tt) = Either t (ListSum tt) -- | workaround for https://gitlab.haskell.org/ghc/ghc/issues/10833 injectiveListSum ::@@ -35,6 +37,7 @@ mapListSum (ConsListType _wa wr) f (Right rest) = Right $ mapListSum wr f rest type ListSumType :: (Type -> Type) -> (Type -> Type)+type role ListSumType representational nominal data ListSumType wit t where MkListSumType :: forall (wit :: Type -> Type) (lt :: [Type]). ListType wit lt -> ListSumType wit (ListSum lt)
src/Data/Type/Witness/Specific/Natural.hs view
@@ -30,6 +30,7 @@ import Unsafe.Coerce type NaturalType :: Nat -> Type+type role NaturalType nominal data NaturalType bn where MkNaturalType :: KnownNat bn => NaturalType bn
src/Data/Type/Witness/Specific/OrderedWitnessMap/For.hs view
@@ -1,6 +1,6 @@ module Data.Type.Witness.Specific.OrderedWitnessMap.For where -import qualified Data.Map as Map+import Data.Map qualified as Map import Data.Type.Witness.General.Order import Data.Type.Witness.Specific.Some import Import@@ -8,9 +8,10 @@ -- | A dictionary that is heterogenous up to its simple witness type @w@. -- Witnesses are the keys of the dictionary, and the values they witness are the values of the dictionary. type OrderedWitnessMapFor :: forall k. (k -> Type) -> (k -> Type) -> Type+type role OrderedWitnessMapFor representational nominal newtype OrderedWitnessMapFor f w = MkOrderedWitnessMapFor (Map.Map (Some w) (SomeFor f w))- deriving (Semigroup, Monoid)+ deriving newtype (Semigroup, Monoid) -- | An empty dictionary. emptyOrderedWitnessMapFor :: TestOrder w => OrderedWitnessMapFor f w
src/Data/Type/Witness/Specific/Pair.hs view
@@ -7,6 +7,7 @@ -- | a witness for pairs of witnesses type PairType :: (k -> Type) -> (k -> Type) -> (k -> Type)+type role PairType representational representational nominal data PairType w1 w2 t = MkPairType (w1 t) (w2 t)
src/Data/Type/Witness/Specific/PeanoNat.hs view
@@ -7,6 +7,7 @@ import Import type PeanoNatType :: PeanoNat -> Type+type role PeanoNatType nominal data PeanoNatType t where ZeroType :: PeanoNatType 'Zero SuccType :: PeanoNatType t -> PeanoNatType ('Succ t)@@ -49,6 +50,7 @@ valueToWitness (Succ n) cont = valueToWitness n $ \t -> cont $ SuccType t type GreaterEqual :: PeanoNat -> PeanoNat -> Type+type role GreaterEqual nominal nominal data GreaterEqual a b where ZeroGreaterEqual :: GreaterEqual a 'Zero SuccGreaterEqual :: GreaterEqual a b -> GreaterEqual ('Succ a) ('Succ b)@@ -100,6 +102,7 @@ Refl -> diff1GreaterEqual $ addPeanoNatTypeGE a b type Greater :: PeanoNat -> PeanoNat -> Type+type role Greater nominal nominal data Greater a b where MkGreater :: GreaterEqual a b -> Greater ('Succ a) b
src/Data/Type/Witness/Specific/Some.hs view
@@ -7,6 +7,7 @@ -- | Any value with a witness to a parameter of its type. type SomeFor :: forall k. (k -> Type) -> (k -> Type) -> Type+type role SomeFor representational representational data SomeFor f w = forall a. MkSomeFor (w a) (f a)@@ -50,7 +51,7 @@ return a type Some :: forall k. (k -> Type) -> Type-type Some = SomeFor (Const ())+type Some @k = SomeFor @k (Const ()) pattern MkSome :: w a -> Some w
src/Data/Type/Witness/Specific/Symbol.hs view
@@ -12,6 +12,7 @@ import Import type SymbolType :: Symbol -> Type+type role SymbolType nominal data SymbolType symbol where MkSymbolType :: KnownSymbol symbol => SymbolType symbol
src/Data/Type/Witness/Specific/WitnessMap/For.hs view
@@ -6,9 +6,10 @@ -- | A dictionary that is heterogenous up to its simple witness type @w@. -- Witnesses are the keys of the dictionary, and the values they witness are the values of the dictionary. type WitnessMapFor :: forall k. (k -> Type) -> (k -> Type) -> Type+type role WitnessMapFor representational representational newtype WitnessMapFor f w = MkWitnessMapFor { witnessMapForToList :: [SomeFor f w]- } deriving (Semigroup, Monoid)+ } deriving newtype (Semigroup, Monoid) -- | An empty dictionary. emptyWitnessMapFor :: WitnessMapFor f w
witness.cabal view
@@ -1,25 +1,32 @@ cabal-version: 2.2 --- This file has been generated from package.yaml by hpack version 0.35.2.+-- This file has been generated from package.yaml by hpack version 0.37.0. -- -- see: https://github.com/sol/hpack name: witness-version: 0.6.2+version: 0.7 synopsis: values that witness types description: A /witness/ is a value that witnesses some sort of constraint on some list of type variables. This library provides support for a wide variety of witness types. It also provides classes for /representatives/, which are values that represent types. category: Data-homepage: https://github.com/AshleyYakeley/witness+homepage: https://github.com/AshleyYakeley/witness#readme bug-reports: https://github.com/AshleyYakeley/witness/issues author: Ashley Yakeley maintainer: <ashley@semantic.org>-copyright: (c) 2017-2022 Ashley Yakeley+copyright: (c) 2017-2024 Ashley Yakeley license: BSD-2-Clause license-file: LICENSE build-type: Simple-extra-source-files:+tested-with:+ GHC == 9.8.4+ , GHC == 9.10.1+extra-doc-files: changelog.md +source-repository head+ type: git+ location: https://github.com/AshleyYakeley/witness+ library exposed-modules: Data.Type.Witness.Apply@@ -62,52 +69,33 @@ default-extensions: AllowAmbiguousTypes Arrows- ConstraintKinds DataKinds DefaultSignatures- EmptyCase- EmptyDataDecls- ExistentialQuantification- FlexibleContexts- FlexibleInstances- ForeignFunctionInterface+ DerivingStrategies FunctionalDependencies- GADTs- GeneralizedNewtypeDeriving ImplicitParams NoImplicitPrelude- InstanceSigs- KindSignatures LambdaCase- MultiParamTypeClasses OverloadedLabels OverloadedStrings PartialTypeSignatures- PatternGuards PatternSynonyms- PolyKinds QuantifiedConstraints- RankNTypes RecordWildCards RecursiveDo- ScopedTypeVariables- StandaloneDeriving- StandaloneKindSignatures+ RoleAnnotations NoStarIsType TemplateHaskell- TypeApplications+ TypeAbstractions TypeFamilies TypeFamilyDependencies- TypeInType- TypeOperators- TypeSynonymInstances UndecidableInstances UndecidableSuperClasses ViewPatterns- ghc-options: -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates -Wcompat -Wnoncanonical-monad-instances+ ghc-options: -Weverything -Wno-missing-import-lists -Wno-missing-export-lists -Wno-unsafe -Wno-missing-safe-haskell-mode -Wno-missing-kind-signatures -Wno-partial-type-signatures -Wno-monomorphism-restriction -Wno-missing-local-signatures -Wno-partial-fields -Wno-all-missed-specialisations -Wno-missed-specialisations build-depends:- base >=4.16 && <5- , constraints >=0.13- , containers >=0.4+ base >=4.19 && <5+ , constraints >=0.14+ , containers >=0.6 , countable >=1.2- default-language: Haskell2010+ default-language: GHC2021