constraint-tuples 0.1.2 → 0.2
raw patch · 9 files changed
+268/−194 lines, 9 filesdep +ghc-primdep ~basePVP ok
version bump matches the API change (PVP)
Dependencies added: ghc-prim
Dependency ranges changed: base
API changes (from Hackage documentation)
- Data.Tuple.Constraint: class CTuple0
- Data.Tuple.Constraint: class c1 => CTuple1 c1
- Data.Tuple.Constraint: instance Data.Tuple.Constraint.CTuple0
- Data.Tuple.Constraint: instance c1 => Data.Tuple.Constraint.CTuple1 c1
- Data.Tuple.Constraint.ClassNewtype: class (() :: Constraint) => CTuple0
- Data.Tuple.Constraint.ClassNewtype: class c1 => CTuple1 c1
- Data.Tuple.Constraint.ClassNewtype: instance () :: Constraint => Data.Tuple.Constraint.ClassNewtype.CTuple0
- Data.Tuple.Constraint.TypeFamily: class c1 => CTuple1 c1
- Data.Tuple.Constraint.TypeSynonym: class c1 => CTuple1 c1
+ Data.Tuple.Constraint: class c1 => CSolo c1
+ Data.Tuple.Constraint: class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63) => CTuple63 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 c63
+ Data.Tuple.Constraint: class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64) => CTuple64 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 c63 c64
+ Data.Tuple.Constraint: class () => CUnit
+ Data.Tuple.Constraint: instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63) => Data.Tuple.Constraint.CTuple63 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 c63
+ Data.Tuple.Constraint: instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64) => Data.Tuple.Constraint.CTuple64 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 c63 c64
+ Data.Tuple.Constraint: instance Data.Tuple.Constraint.CUnit
+ Data.Tuple.Constraint: instance c1 => Data.Tuple.Constraint.CSolo c1
+ Data.Tuple.Constraint: type CTuple0 = (() :: Constraint)
+ Data.Tuple.Constraint: type CTuple1 = CSolo
+ Data.Tuple.Constraint.ClassNewtype: class c1 => CSolo c1
+ Data.Tuple.Constraint.ClassNewtype: class ((c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63) :: Constraint) => CTuple63 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 c63
+ Data.Tuple.Constraint.ClassNewtype: class ((c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64) :: Constraint) => CTuple64 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 c63 c64
+ Data.Tuple.Constraint.ClassNewtype: class (() :: Constraint) => CUnit
+ Data.Tuple.Constraint.ClassNewtype: instance (() :: Constraint) => Data.Tuple.Constraint.ClassNewtype.CUnit
+ Data.Tuple.Constraint.ClassNewtype: instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63) => Data.Tuple.Constraint.ClassNewtype.CTuple63 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 c63
+ Data.Tuple.Constraint.ClassNewtype: instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64) => Data.Tuple.Constraint.ClassNewtype.CTuple64 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 c63 c64
+ Data.Tuple.Constraint.ClassNewtype: type CTuple0 = (() :: Constraint)
+ Data.Tuple.Constraint.ClassNewtype: type CTuple1 = CSolo
+ Data.Tuple.Constraint.TypeFamily: class c1 => CSolo c1
+ Data.Tuple.Constraint.TypeFamily: type CTuple1 = CSolo
+ Data.Tuple.Constraint.TypeFamily: type CTuple63 = Decomposer63 (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint)
+ Data.Tuple.Constraint.TypeFamily: type CTuple64 = Decomposer64 (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint)
+ Data.Tuple.Constraint.TypeFamily: type CUnit = Decomposer0 (() :: Constraint)
+ Data.Tuple.Constraint.TypeSynonym: class c1 => CSolo c1
+ Data.Tuple.Constraint.TypeSynonym: type CTuple1 = CSolo
+ Data.Tuple.Constraint.TypeSynonym: type CTuple63 = Decomposer63 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple64 = Decomposer64 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CUnit = Decomposer0 ('Proxy :: Proxy (() :: Constraint))
- Data.Tuple.Constraint.TypeFamily: type CTuple0 = Decomposer0 (() :: Constraint)
+ Data.Tuple.Constraint.TypeFamily: type CTuple0 = (() :: Constraint)
- Data.Tuple.Constraint.TypeSynonym: type CTuple0 = Decomposer0 ( 'Proxy :: Proxy (() :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple0 = (() :: Constraint)
- Data.Tuple.Constraint.TypeSynonym: type CTuple10 = Decomposer10 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple10 = Decomposer10 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple11 = Decomposer11 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple11 = Decomposer11 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple12 = Decomposer12 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple12 = Decomposer12 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple13 = Decomposer13 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple13 = Decomposer13 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple14 = Decomposer14 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple14 = Decomposer14 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple15 = Decomposer15 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple15 = Decomposer15 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple16 = Decomposer16 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple16 = Decomposer16 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple17 = Decomposer17 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple17 = Decomposer17 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple18 = Decomposer18 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple18 = Decomposer18 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple19 = Decomposer19 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple19 = Decomposer19 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple2 = Decomposer2 ( 'Proxy :: Proxy (((), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple2 = Decomposer2 ('Proxy :: Proxy (((), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple20 = Decomposer20 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple20 = Decomposer20 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple21 = Decomposer21 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple21 = Decomposer21 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple22 = Decomposer22 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple22 = Decomposer22 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple23 = Decomposer23 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple23 = Decomposer23 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple24 = Decomposer24 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple24 = Decomposer24 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple25 = Decomposer25 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple25 = Decomposer25 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple26 = Decomposer26 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple26 = Decomposer26 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple27 = Decomposer27 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple27 = Decomposer27 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple28 = Decomposer28 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple28 = Decomposer28 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple29 = Decomposer29 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple29 = Decomposer29 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple3 = Decomposer3 ( 'Proxy :: Proxy (((), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple3 = Decomposer3 ('Proxy :: Proxy (((), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple30 = Decomposer30 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple30 = Decomposer30 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple31 = Decomposer31 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple31 = Decomposer31 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple32 = Decomposer32 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple32 = Decomposer32 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple33 = Decomposer33 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple33 = Decomposer33 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple34 = Decomposer34 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple34 = Decomposer34 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple35 = Decomposer35 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple35 = Decomposer35 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple36 = Decomposer36 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple36 = Decomposer36 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple37 = Decomposer37 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple37 = Decomposer37 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple38 = Decomposer38 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple38 = Decomposer38 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple39 = Decomposer39 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple39 = Decomposer39 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple4 = Decomposer4 ( 'Proxy :: Proxy (((), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple4 = Decomposer4 ('Proxy :: Proxy (((), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple40 = Decomposer40 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple40 = Decomposer40 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple41 = Decomposer41 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple41 = Decomposer41 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple42 = Decomposer42 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple42 = Decomposer42 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple43 = Decomposer43 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple43 = Decomposer43 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple44 = Decomposer44 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple44 = Decomposer44 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple45 = Decomposer45 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple45 = Decomposer45 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple46 = Decomposer46 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple46 = Decomposer46 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple47 = Decomposer47 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple47 = Decomposer47 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple48 = Decomposer48 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple48 = Decomposer48 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple49 = Decomposer49 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple49 = Decomposer49 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple5 = Decomposer5 ( 'Proxy :: Proxy (((), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple5 = Decomposer5 ('Proxy :: Proxy (((), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple50 = Decomposer50 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple50 = Decomposer50 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple51 = Decomposer51 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple51 = Decomposer51 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple52 = Decomposer52 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple52 = Decomposer52 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple53 = Decomposer53 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple53 = Decomposer53 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple54 = Decomposer54 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple54 = Decomposer54 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple55 = Decomposer55 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple55 = Decomposer55 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple56 = Decomposer56 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple56 = Decomposer56 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple57 = Decomposer57 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple57 = Decomposer57 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple58 = Decomposer58 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple58 = Decomposer58 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple59 = Decomposer59 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple59 = Decomposer59 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple6 = Decomposer6 ( 'Proxy :: Proxy (((), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple6 = Decomposer6 ('Proxy :: Proxy (((), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple60 = Decomposer60 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple60 = Decomposer60 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple61 = Decomposer61 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple61 = Decomposer61 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple62 = Decomposer62 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple62 = Decomposer62 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple7 = Decomposer7 ( 'Proxy :: Proxy (((), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple7 = Decomposer7 ('Proxy :: Proxy (((), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple8 = Decomposer8 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple8 = Decomposer8 ('Proxy :: Proxy (((), (), (), (), (), (), (), ()) :: Constraint))
- Data.Tuple.Constraint.TypeSynonym: type CTuple9 = Decomposer9 ( 'Proxy :: Proxy (((), (), (), (), (), (), (), (), ()) :: Constraint))
+ Data.Tuple.Constraint.TypeSynonym: type CTuple9 = Decomposer9 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), ()) :: Constraint))
Files
- CHANGELOG.md +11/−0
- README.md +4/−5
- constraint-tuples.cabal +18/−14
- generator-script/exe/GeneratorScript.hs +104/−102
- generator-script/generator-script.cabal +12/−8
- src/Data/Tuple/Constraint.hs +45/−18
- src/Data/Tuple/Constraint/ClassNewtype.hs +26/−25
- src/Data/Tuple/Constraint/TypeFamily.hs +25/−11
- src/Data/Tuple/Constraint/TypeSynonym.hs +23/−11
CHANGELOG.md view
@@ -1,3 +1,14 @@+## 0.2 [2024.05.03]+* Drop support for GHC 7.10 and earlier.+* When building with GHC 9.10 or later, `Data.Tuple.Constraint` will simply+ re-export constraint tuple definitions found in `GHC.Classes`. If building+ with an older version of GHC, `Data.Tuple.Constraint` will backport the+ definitions from `GHC.Classes.+* Provide nullary constraint tuples named `CUnit` and unary constraint tuples+ named `CSolo` for consistency with `GHC.Classes` in GHC 9.10+.+* Provide constraint tuples up to size 64 when building with GHC 9.2 or later.+ (Earlier versions of GHC impose a maximum tuple size of 62.)+ ### 0.1.2 [2019.11.24] * Introduce the `Data.Tuple.Constraint.{TypeFamily,TypeSynonym}` modules that provide ways of directly accessing constraint tuple type constructors through
README.md view
@@ -3,7 +3,7 @@ [](http://packdeps.haskellers.com/reverse/constraint-tuples) [][Haskell.org] [][tl;dr Legal: BSD3]-[](https://travis-ci.org/RyanGlScott/constraint-tuples)+[](https://github.com/RyanGlScott/constraint-tuples/actions?query=workflow%3AHaskell-CI) [Hackage: constraint-tuples]: http://hackage.haskell.org/package/constraint-tuples@@ -23,7 +23,8 @@ API with slight differences in their implementation: * `Data.Tuple.Constraint`: A `CTupleN` class compiles to a dictionary data type- with `N` fields.+ with `N` fields. (When building with GHC 9.10 or later, this will simply+ re-export the constraint tuples offered by `GHC.Classes`.) * `Data.Tuple.Constraint.ClassNewtype`: A `CTupleN` class compiles to a newtype around the corresponding built-in constraint tuple type with `N` arguments. * `Data.Tuple.Constraint.TypeFamily`: A `CTupleN` type alias is a constraint@@ -32,6 +33,4 @@ type family axiom. * `Data.Tuple.Constraint.TypeSynonym`: A `CTupleN` type alias is a constraint tuple type constructor with `N` arguments obtained by way of a type synonym.- This will compile directly to a built-in constraint tuple, but because this- requires use of GHC features only present on 8.0 or later, this module does- not export anything on earlier versions of GHC.+ This will compile directly to a built-in constraint tuple.
constraint-tuples.cabal view
@@ -1,6 +1,6 @@ cabal-version: >=1.10 name: constraint-tuples-version: 0.1.2+version: 0.2 synopsis: Partially applicable constraint tuples description: This library provides classes and type aliases that emulate the behavior of GHC's constraint tuple syntax.@@ -12,25 +12,24 @@ implementation: . * "Data.Tuple.Constraint": A @CTupleN@ class compiles to- a dictionary data type with @N@ fields.+ a dictionary data type with @N@ fields. (When building+ with GHC 9.10 or later, this will simply re-export the+ constraint tuples offered by "GHC.Classes".) . * "Data.Tuple.Constraint.ClassNewtype": A @CTupleN@ class compiles to a newtype around the corresponding built-in constraint tuple type with @N@ arguments. .- * @Data.Tuple.Constraint.TypeFamily@: A @CTupleN@ type+ * "Data.Tuple.Constraint.TypeFamily": A @CTupleN@ type alias is a constraint tuple type constructor with @N@ arguments obtained by way of a type family. This will compile to a built-in constraint tuple, but casted with a type family axiom. .- * @Data.Tuple.Constraint.TypeSynonym@: A @CTupleN@ type+ * "Data.Tuple.Constraint.TypeSynonym": A @CTupleN@ type alias is a constraint tuple type constructor with @N@ arguments obtained by way of a type synonym. This will- compile directly to a built-in constraint tuple, but- because this requires use of GHC features only present- on 8.0 or later, this module does not export anything on- earlier versions of GHC.+ compile directly to a built-in constraint tuple. homepage: https://github.com/RyanGlScott/constraint-tuples bug-reports: https://github.com/RyanGlScott/constraint-tuples/issues license: BSD3@@ -47,14 +46,18 @@ generator-script/LICENSE generator-script/generator-script.cabal generator-script/exe/GeneratorScript.hs-tested-with: GHC == 7.6.3- , GHC == 7.8.4- , GHC == 7.10.3- , GHC == 8.0.2+tested-with: GHC == 8.0.2 , GHC == 8.2.2 , GHC == 8.4.4 , GHC == 8.6.5- , GHC == 8.8.1+ , GHC == 8.8.4+ , GHC == 8.10.7+ , GHC == 9.0.2+ , GHC == 9.2.8+ , GHC == 9.4.8+ , GHC == 9.6.5+ , GHC == 9.8.2+ , GHC == 9.10.1 source-repository head type: git@@ -65,7 +68,8 @@ Data.Tuple.Constraint.ClassNewtype Data.Tuple.Constraint.TypeFamily Data.Tuple.Constraint.TypeSynonym- build-depends: base >= 4.6 && < 5+ build-depends: base >= 4.9 && < 5+ , ghc-prim hs-source-dirs: src default-language: Haskell2010 ghc-options: -Wall
generator-script/exe/GeneratorScript.hs view
@@ -4,8 +4,7 @@ -- to invoke this. module Main (main) where -import Data.List.Compat-import GHC.Exts (maxTupleSize)+import Data.List.Compat (intercalate, intersperse) import Prelude () import Prelude.Compat import Options.Applicative@@ -52,10 +51,16 @@ let sourceCode = unlines $ preamble args ++ decs args in writeFile output sourceCode +tupleName :: Int -> String+tupleName n+ | n == 0 = "CUnit"+ | n == 1 = "CSolo"+ | otherwise = "CTuple" ++ show n+ genClassDef :: Bool -> Int -> String genClassDef classNewtype n = parens (concat (intersperse ", " cNums))- ++ " => CTuple" ++ show n+ ++ " => " ++ tupleName n ++ [ ' ' | n > 0 ] ++ unwords cNums where@@ -87,9 +92,7 @@ genAlias :: Bool -- True for type families, False for type synonyms -> Int -> String genAlias typeFams i =- "type CTuple"- ++ show i ++ " = Decomposer"- ++ show i ++ " (" ++ arg ++ ")"+ "type " ++ tupleName i ++ " = Decomposer" ++ show i ++ " (" ++ arg ++ ")" where arg :: String arg | typeFams = dummyClass@@ -107,12 +110,7 @@ classDefHaddocks i = [ "-- | A constraint tuple class with " ++ show i ++ " argument" ++ pluralSuffix i ++ "."- ] ++- if i == 0- then [ "--"- , "-- This class is only defined on GHC 7.8 or later."- ]- else []+ ] aliasHaddocks :: Int -> String aliasHaddocks i =@@ -130,19 +128,18 @@ [ "{-# LANGUAGE ConstraintKinds #-}" , "{-# LANGUAGE CPP #-}" , "{-# LANGUAGE KindSignatures #-}"+ , "{-# LANGUAGE Safe #-}" ] ++ case mode of Default -> classDefExts ClassNewtype -> classDefExts TypeFamily -> [ "{-# LANGUAGE TypeFamilies #-}" ]- TypeSynonym -> [ "#if __GLASGOW_HASKELL__ >= 800"- , "{-# LANGUAGE DataKinds #-}"+ TypeSynonym -> [ "{-# LANGUAGE DataKinds #-}" , "{-# LANGUAGE PolyKinds #-}"- , "# if __GLASGOW_HASKELL__ < 806"+ , "#if __GLASGOW_HASKELL__ < 806" , "{-# LANGUAGE TypeInType #-}"- , "# endif" , "#endif" ]- ++ safeHaskell +++ ++ [ "" , "-- | This module provides " ++ things ++ " that emulate the behavior of GHC's constraint" , "-- tuple syntax. Unlike GHC's built-in constraint tuples, the " ++ things ++ " in this"@@ -158,12 +155,7 @@ [ "{-# LANGUAGE FlexibleInstances #-}" , "{-# LANGUAGE MultiParamTypeClasses #-}" , "{-# LANGUAGE UndecidableInstances #-}"- , "#if __GLASGOW_HASKELL__ >= 708 && __GLASGOW_HASKELL__ < 710"- , "{-# LANGUAGE NullaryTypeClasses #-}"- , "#endif"- , "#if __GLASGOW_HASKELL__ >= 800" , "{-# LANGUAGE UndecidableSuperClasses #-}"- , "#endif" ] things :: String@@ -181,87 +173,56 @@ exports :: [String] exports =- concat- [ if mode == TypeSynonym- then [ "#if __GLASGOW_HASKELL__ < 800"- , " () where"- , "#else"- ]- else []- , [ " ( -- * Constraint tuples"- ] ++ cTupleExports ++- [ " ) where" ]- ]+ [ " ( -- * Constraint tuples"+ , " CTuple0"+ , " , CTuple1"+ ] ++ cTupleExports +++ [ " ) where" ] cTupleExports :: [String] cTupleExports = flip concatMap [0..maxTupleSize] $ \i ->- case i of- 0 ->- if mode `elem` classDefModes- then [ "#if __GLASGOW_HASKELL__ >= 708"- , " CTuple0,"- , "#endif"- ]- else [ " CTuple0" ]- 1 | mode `elem` classDefModes- -> [ " CTuple1" ]- _ -> [ " , CTuple" ++ show i ]- where- classDefModes :: [Mode]- classDefModes = [Default, ClassNewtype]+ [ "#if __GLASGOW_HASKELL__ >= 902" | largeTupleSize i ] +++ [ " , " ++ tupleName i ] +++ [ "#endif" | largeTupleSize i ] imports :: [String] imports = case mode of- Default -> []+ Default -> defaultImports ClassNewtype -> constraintImports TypeFamily -> constraintImports- TypeSynonym -> [ cTuple1Import+ TypeSynonym -> [ dtcImports , "import Data.Kind (Constraint)" , "import Data.Proxy (Proxy(..))"- , "" ] - constraintImports :: [String]- constraintImports =- [ cTuple1Import- , "#if __GLASGOW_HASKELL__ >= 800"- , "import Data.Kind (Constraint)"+ defaultImports :: [String]+ defaultImports =+ [ "#if __GLASGOW_HASKELL__ >= 910"+ , "import GHC.Classes" , "#else"- , "import GHC.Exts (Constraint)"+ , "import Data.Kind (Constraint)" , "#endif"- , "" ] - cTuple1Import :: String- cTuple1Import = "import Data.Tuple.Constraint (CTuple1)"-- safeHaskell :: [String]- safeHaskell =- case mode of- Default -> [ safe ]- ClassNewtype -> safeOn8'0OrLater- TypeFamily -> safeOn8'0OrLater- TypeSynonym -> [ safe ]-- safe :: String- safe = "{-# LANGUAGE Safe #-}"-- safeOn8'0OrLater :: [String]- safeOn8'0OrLater =- [ "#if __GLASGOW_HASKELL__ >= 800"- , safe- , "#else"- , "{-# LANGUAGE Trustworthy #-}"- , "#endif"+ constraintImports :: [String]+ constraintImports =+ [ dtcImports+ , "import Data.Kind (Constraint)" ] + dtcImports :: String+ dtcImports = "import Data.Tuple.Constraint (CTuple0, CTuple1, CSolo)"+ haddockNote :: [String] haddockNote = case mode of Default ->- []+ [ "--"+ , "-- When building with GHC 9.10 or later, this will simply re-export the"+ , "-- constraint tuples offered by \"GHC.Classes\"."+ ] ClassNewtype -> [ "--" , "-- Unlike \"Data.Tuple.Constraint\", a @CTupleN@ class defined in this module"@@ -301,44 +262,85 @@ , "-- The type aliases in this module are defined by way of " ++ if typeFams then "type families" else "type synonyms" ++ " that" , "-- decompose applications of constraint tuple type constructors to their arguments."- ] ++- if typeFams- then []- else [ "-- This requires the use of GHC capabilities that are only present on GHC 8.0 or"- , "-- later, so this module does not export anything on earlier versions of GHC."- ]+ ] decs :: Args -> [String] decs Args{mode} =- flip concatMap [0..maxTupleSize] (\i ->- if mode /= Default && i == 1- then [] -- CTuple1 is imported from Data.Tuple.Constraint- else case mode of- Default -> genClassDefs False i- ClassNewtype -> genClassDefs True i- TypeFamily -> genAliasDefs True i- TypeSynonym -> genAliasDefs False i- ++ [ "" ])- ++ [ "#endif" | mode == TypeSynonym ]+ concat+ [ concat+ [ [ ""+ , "#if __GLASGOW_HASKELL__ < 910"+ ]+ | mode == Default+ ]+ , [ "" ]+ , extraDefs+ , flip concatMap [0..maxTupleSize] (\i ->+ if mode /= Default && i == 1+ then [] -- CSolo is imported from Data.Tuple.Constraint+ else case mode of+ Default -> genClassDefs False i+ ClassNewtype -> genClassDefs True i+ TypeFamily -> genAliasDefs True i+ TypeSynonym -> genAliasDefs False i+ ++ [ "" ])+ , [ "#endif" | mode == Default ]+ ] where+ extraDefs :: [String]+ extraDefs =+ concat+ [ [ "-- | An alias for a nullary constraint tuple."+ , "type CTuple0 = (() :: Constraint)"+ , ""+ , "-- | An alias for a unary constraint tuple."+ , "type CTuple1 = CSolo"+ , ""+ ]+ | mode == Default+ ]+ genClassDefs :: Bool -- Should the classes be newtypes? -> Int -> [String] genClassDefs classNewtype i = let cTuple = genClassDef classNewtype i in concat- [ [ "#if __GLASGOW_HASKELL__ >= 708" | i == 0 ]+ [ [ "#if __GLASGOW_HASKELL__ >= 902" | largeTupleSize i ] , classDefHaddocks i , [ "class " ++ cTuple , "instance " ++ cTuple ]- , [ "#endif" | i == 0 ]+ , [ "#endif" | largeTupleSize i ] ] genAliasDefs :: Bool -- True for type families, False for type synonyms -> Int -> [String] genAliasDefs typeFams i =- aliasHaddocks i- : genAlias typeFams i- : if typeFams- then genTypeFamilyDecomposers i- else [ genTypeSynonymDecomposer i ]+ concat+ [ [ "#if __GLASGOW_HASKELL__ >= 902" | largeTupleSize i ]+ , [ aliasHaddocks i+ , genAlias typeFams i+ ]+ , if typeFams+ then genTypeFamilyDecomposers i+ else [ genTypeSynonymDecomposer i ]+ , [ "#endif" | largeTupleSize i ]+ ]++-- | The maximum tuple size to generate.+--+-- This should stay in sync with the value of @GHC.Exts.maxTupleSize@. We define+-- it here separately because different versions of GHC have different values+-- of @GHC.Exts.maxTupleSize@, and we want the generator script to produce the+-- same output regardless of which GHC version is used to build the script.+maxTupleSize :: Int+maxTupleSize = 64++-- GHC 8.0 through 9.0 impose a maximum tuple size of 62, so one cannot define+-- constraint tuples of larger sizes. GHC 9.2 and later, however, raise the+-- maximum tuple size to 64 (see 'maxTupleSize' above). We would still like to+-- define 63- and 64- tuples whenever possible, so we use this function to check+-- if a tuple is too large for old GHCs (and therefore needs to be guarded by+-- appropriate CPP).+largeTupleSize :: Int -> Bool+largeTupleSize i = i > 62
generator-script/generator-script.cabal view
@@ -16,14 +16,18 @@ copyright: (C) 2018-2019 Ryan Scott category: Data build-type: Simple-tested-with: GHC == 7.6.3- , GHC == 7.8.4- , GHC == 7.10.3- , GHC == 8.0.2+tested-with: GHC == 8.0.2 , GHC == 8.2.2 , GHC == 8.4.4 , GHC == 8.6.5- , GHC == 8.8.1+ , GHC == 8.8.4+ , GHC == 8.10.7+ , GHC == 9.0.2+ , GHC == 9.2.8+ , GHC == 9.4.8+ , GHC == 9.6.5+ , GHC == 9.8.2+ , GHC == 9.10.1 source-repository head type: git@@ -32,9 +36,9 @@ executable generator-script main-is: GeneratorScript.hs- build-depends: base >= 4.6 && < 5- , base-compat-batteries >= 0.10 && < 0.12- , optparse-applicative >= 0.13 && < 0.16+ build-depends: base >= 4.9 && < 5+ , base-compat-batteries >= 0.10 && < 0.15+ , optparse-applicative >= 0.13 && < 0.19 hs-source-dirs: exe default-language: Haskell2010 ghc-options: -Wall -threaded -rtsopts
src/Data/Tuple/Constraint.hs view
@@ -1,26 +1,24 @@ {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE CPP #-} {-# LANGUAGE KindSignatures #-}+{-# LANGUAGE Safe #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE UndecidableInstances #-}-#if __GLASGOW_HASKELL__ >= 708 && __GLASGOW_HASKELL__ < 710-{-# LANGUAGE NullaryTypeClasses #-}-#endif-#if __GLASGOW_HASKELL__ >= 800 {-# LANGUAGE UndecidableSuperClasses #-}-#endif-{-# LANGUAGE Safe #-} -- | This module provides classes that emulate the behavior of GHC's constraint -- tuple syntax. Unlike GHC's built-in constraint tuples, the classes in this -- library can be partially applied.+--+-- When building with GHC 9.10 or later, this will simply re-export the+-- constraint tuples offered by "GHC.Classes". module Data.Tuple.Constraint ( -- * Constraint tuples-#if __GLASGOW_HASKELL__ >= 708- CTuple0,-#endif- CTuple1+ CTuple0+ , CTuple1+ , CUnit+ , CSolo , CTuple2 , CTuple3 , CTuple4@@ -82,19 +80,35 @@ , CTuple60 , CTuple61 , CTuple62+#if __GLASGOW_HASKELL__ >= 902+ , CTuple63+#endif+#if __GLASGOW_HASKELL__ >= 902+ , CTuple64+#endif ) where -#if __GLASGOW_HASKELL__ >= 708--- | A constraint tuple class with 0 arguments.------ This class is only defined on GHC 7.8 or later.-class () => CTuple0-instance () => CTuple0+#if __GLASGOW_HASKELL__ >= 910+import GHC.Classes+#else+import Data.Kind (Constraint) #endif +#if __GLASGOW_HASKELL__ < 910++-- | An alias for a nullary constraint tuple.+type CTuple0 = (() :: Constraint)++-- | An alias for a unary constraint tuple.+type CTuple1 = CSolo++-- | A constraint tuple class with 0 arguments.+class () => CUnit+instance () => CUnit+ -- | A constraint tuple class with 1 argument.-class c1 => CTuple1 c1-instance c1 => CTuple1 c1+class c1 => CSolo c1+instance c1 => CSolo c1 -- | A constraint tuple class with 2 arguments. class (c1, c2) => CTuple2 c1 c2@@ -340,3 +354,16 @@ class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62) => CTuple62 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62) => CTuple62 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 +#if __GLASGOW_HASKELL__ >= 902+-- | A constraint tuple class with 63 arguments.+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63) => CTuple63 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 c63+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63) => CTuple63 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 c63+#endif++#if __GLASGOW_HASKELL__ >= 902+-- | A constraint tuple class with 64 arguments.+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64) => CTuple64 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 c63 c64+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64) => CTuple64 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 c63 c64+#endif++#endif
src/Data/Tuple/Constraint/ClassNewtype.hs view
@@ -1,20 +1,11 @@ {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE CPP #-} {-# LANGUAGE KindSignatures #-}+{-# LANGUAGE Safe #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE UndecidableInstances #-}-#if __GLASGOW_HASKELL__ >= 708 && __GLASGOW_HASKELL__ < 710-{-# LANGUAGE NullaryTypeClasses #-}-#endif-#if __GLASGOW_HASKELL__ >= 800 {-# LANGUAGE UndecidableSuperClasses #-}-#endif-#if __GLASGOW_HASKELL__ >= 800-{-# LANGUAGE Safe #-}-#else-{-# LANGUAGE Trustworthy #-}-#endif -- | This module provides classes that emulate the behavior of GHC's constraint -- tuple syntax. Unlike GHC's built-in constraint tuples, the classes in this@@ -48,10 +39,10 @@ -- construct a @Dict@ dictionary. module Data.Tuple.Constraint.ClassNewtype ( -- * Constraint tuples-#if __GLASGOW_HASKELL__ >= 708- CTuple0,-#endif- CTuple1+ CTuple0+ , CTuple1+ , CUnit+ , CSolo , CTuple2 , CTuple3 , CTuple4@@ -113,22 +104,20 @@ , CTuple60 , CTuple61 , CTuple62+#if __GLASGOW_HASKELL__ >= 902+ , CTuple63+#endif+#if __GLASGOW_HASKELL__ >= 902+ , CTuple64+#endif ) where -import Data.Tuple.Constraint (CTuple1)-#if __GLASGOW_HASKELL__ >= 800+import Data.Tuple.Constraint (CTuple0, CTuple1, CSolo) import Data.Kind (Constraint)-#else-import GHC.Exts (Constraint)-#endif -#if __GLASGOW_HASKELL__ >= 708 -- | A constraint tuple class with 0 arguments.------ This class is only defined on GHC 7.8 or later.-class (() :: Constraint) => CTuple0-instance (() :: Constraint) => CTuple0-#endif+class (() :: Constraint) => CUnit+instance (() :: Constraint) => CUnit -- | A constraint tuple class with 2 arguments. class ((c1, c2) :: Constraint) => CTuple2 c1 c2@@ -373,4 +362,16 @@ -- | A constraint tuple class with 62 arguments. class ((c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62) :: Constraint) => CTuple62 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 instance ((c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62) :: Constraint) => CTuple62 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62++#if __GLASGOW_HASKELL__ >= 902+-- | A constraint tuple class with 63 arguments.+class ((c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63) :: Constraint) => CTuple63 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 c63+instance ((c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63) :: Constraint) => CTuple63 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 c63+#endif++#if __GLASGOW_HASKELL__ >= 902+-- | A constraint tuple class with 64 arguments.+class ((c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64) :: Constraint) => CTuple64 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 c63 c64+instance ((c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64) :: Constraint) => CTuple64 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 c63 c64+#endif
src/Data/Tuple/Constraint/TypeFamily.hs view
@@ -1,12 +1,8 @@ {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE CPP #-} {-# LANGUAGE KindSignatures #-}-{-# LANGUAGE TypeFamilies #-}-#if __GLASGOW_HASKELL__ >= 800 {-# LANGUAGE Safe #-}-#else-{-# LANGUAGE Trustworthy #-}-#endif+{-# LANGUAGE TypeFamilies #-} -- | This module provides type aliases that emulate the behavior of GHC's constraint -- tuple syntax. Unlike GHC's built-in constraint tuples, the type aliases in this@@ -18,6 +14,8 @@ ( -- * Constraint tuples CTuple0 , CTuple1+ , CUnit+ , CSolo , CTuple2 , CTuple3 , CTuple4@@ -79,17 +77,19 @@ , CTuple60 , CTuple61 , CTuple62+#if __GLASGOW_HASKELL__ >= 902+ , CTuple63+#endif+#if __GLASGOW_HASKELL__ >= 902+ , CTuple64+#endif ) where -import Data.Tuple.Constraint (CTuple1)-#if __GLASGOW_HASKELL__ >= 800+import Data.Tuple.Constraint (CTuple0, CTuple1, CSolo) import Data.Kind (Constraint)-#else-import GHC.Exts (Constraint)-#endif -- | A type alias for a constraint tuple with 0 arguments.-type CTuple0 = Decomposer0 (() :: Constraint)+type CUnit = Decomposer0 (() :: Constraint) type family Decomposer0 (x :: Constraint) :: Constraint type instance Decomposer0 (f ) = f @@ -397,4 +397,18 @@ type CTuple62 = Decomposer62 (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint) type family Decomposer62 (x :: Constraint) :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint type instance Decomposer62 (f c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62) = f++#if __GLASGOW_HASKELL__ >= 902+-- | A type alias for a constraint tuple with 63 arguments.+type CTuple63 = Decomposer63 (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint)+type family Decomposer63 (x :: Constraint) :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint+type instance Decomposer63 (f c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 c63) = f+#endif++#if __GLASGOW_HASKELL__ >= 902+-- | A type alias for a constraint tuple with 64 arguments.+type CTuple64 = Decomposer64 (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint)+type family Decomposer64 (x :: Constraint) :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint+type instance Decomposer64 (f c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 c63 c64) = f+#endif
src/Data/Tuple/Constraint/TypeSynonym.hs view
@@ -1,14 +1,12 @@ {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE CPP #-} {-# LANGUAGE KindSignatures #-}-#if __GLASGOW_HASKELL__ >= 800+{-# LANGUAGE Safe #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE PolyKinds #-}-# if __GLASGOW_HASKELL__ < 806+#if __GLASGOW_HASKELL__ < 806 {-# LANGUAGE TypeInType #-}-# endif #endif-{-# LANGUAGE Safe #-} -- | This module provides type aliases that emulate the behavior of GHC's constraint -- tuple syntax. Unlike GHC's built-in constraint tuples, the type aliases in this@@ -16,15 +14,12 @@ -- -- The type aliases in this module are defined by way of type synonyms that -- decompose applications of constraint tuple type constructors to their arguments.--- This requires the use of GHC capabilities that are only present on GHC 8.0 or--- later, so this module does not export anything on earlier versions of GHC. module Data.Tuple.Constraint.TypeSynonym-#if __GLASGOW_HASKELL__ < 800- () where-#else ( -- * Constraint tuples CTuple0 , CTuple1+ , CUnit+ , CSolo , CTuple2 , CTuple3 , CTuple4@@ -86,14 +81,20 @@ , CTuple60 , CTuple61 , CTuple62+#if __GLASGOW_HASKELL__ >= 902+ , CTuple63+#endif+#if __GLASGOW_HASKELL__ >= 902+ , CTuple64+#endif ) where -import Data.Tuple.Constraint (CTuple1)+import Data.Tuple.Constraint (CTuple0, CTuple1, CSolo) import Data.Kind (Constraint) import Data.Proxy (Proxy(..)) -- | A type alias for a constraint tuple with 0 arguments.-type CTuple0 = Decomposer0 ('Proxy :: Proxy (() :: Constraint))+type CUnit = Decomposer0 ('Proxy :: Proxy (() :: Constraint)) type Decomposer0 (x :: Proxy ((f :: Constraint) )) = f -- | A type alias for a constraint tuple with 2 arguments.@@ -340,4 +341,15 @@ type CTuple62 = Decomposer62 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint)) type Decomposer62 (x :: Proxy ((f :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint) c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62)) = f +#if __GLASGOW_HASKELL__ >= 902+-- | A type alias for a constraint tuple with 63 arguments.+type CTuple63 = Decomposer63 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))+type Decomposer63 (x :: Proxy ((f :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint) c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 c63)) = f #endif++#if __GLASGOW_HASKELL__ >= 902+-- | A type alias for a constraint tuple with 64 arguments.+type CTuple64 = Decomposer64 ('Proxy :: Proxy (((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) :: Constraint))+type Decomposer64 (x :: Proxy ((f :: Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint -> Constraint) c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 c63 c64)) = f+#endif+