{-# LANGUAGE CPP #-} {-# LANGUAGE UndecidableInstances #-} -- | 'Syntactic' instances for Haskell tuples module Language.Syntactic.Frontend.Tuple where import Language.Syntactic import Language.Syntactic.Constructs.Tuple import Data.Tuple.Curry instance ( Syntactic a, Domain a ~ dom , Syntactic b, Domain b ~ dom , InjectC Tuple dom ( Internal a , Internal b ) , InjectC Select dom (Internal a) , InjectC Select dom (Internal b) ) => Syntactic (a,b) where #ifdef MIN_VERSION_GLASGOW_HASKELL #if MIN_VERSION_GLASGOW_HASKELL(7,10,2,0) {-# SPECIALIZE instance ( Syntactic a, Domain a ~ dom , Syntactic b, Domain b ~ dom , InjectC Tuple dom ( Internal a , Internal b ) , InjectC Select dom (Internal a) , InjectC Select dom (Internal b) ) => Syntactic (a,b) #-} #endif #endif {-# INLINABLE desugar #-} {-# INLINABLE sugar #-} type Domain (a,b) = Domain a type Internal (a,b) = ( Internal a , Internal b ) -- desugar = uncurryN $ sugarSymC Tup2 desugar (a,b) = sugarSymC Tup2 a b sugar a = ( sugarSymC Sel1 a , sugarSymC Sel2 a ) -- instance -- ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- ) => -- Syntactic (a,b,c) -- where -- {-# SPECIALIZE instance ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- ) => Syntactic (a,b,c) #-} -- {-# INLINABLE desugar #-} -- {-# INLINABLE sugar #-} -- type Domain (a,b,c) = Domain a -- type Internal (a,b,c) = -- ( Internal a -- , Internal b -- , Internal c -- ) -- -- desugar = uncurryN $ sugarSymC Tup3 -- sugar a = -- ( sugarSymC Sel1 a -- , sugarSymC Sel2 a -- , sugarSymC Sel3 a -- ) -- -- instance -- ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- ) => -- Syntactic (a,b,c,d) -- where -- {-# SPECIALIZE instance ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- ) => Syntactic (a,b,c,d) #-} -- {-# INLINABLE desugar #-} -- {-# INLINABLE sugar #-} -- type Domain (a,b,c,d) = Domain a -- type Internal (a,b,c,d) = -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- ) -- -- desugar = uncurryN $ sugarSymC Tup4 -- sugar a = -- ( sugarSymC Sel1 a -- , sugarSymC Sel2 a -- , sugarSymC Sel3 a -- , sugarSymC Sel4 a -- ) -- -- instance -- ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , Syntactic e, Domain e ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- , InjectC Select dom (Internal e) -- ) => -- Syntactic (a,b,c,d,e) -- where -- {-# SPECIALIZE instance ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , Syntactic e, Domain e ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- , InjectC Select dom (Internal e) -- ) => Syntactic (a,b,c,d,e) #-} -- {-# INLINABLE desugar #-} -- {-# INLINABLE sugar #-} -- type Domain (a,b,c,d,e) = Domain a -- type Internal (a,b,c,d,e) = -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- ) -- -- desugar = uncurryN $ sugarSymC Tup5 -- sugar a = -- ( sugarSymC Sel1 a -- , sugarSymC Sel2 a -- , sugarSymC Sel3 a -- , sugarSymC Sel4 a -- , sugarSymC Sel5 a -- ) -- -- instance -- ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , Syntactic e, Domain e ~ dom -- , Syntactic f, Domain f ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- , InjectC Select dom (Internal e) -- , InjectC Select dom (Internal f) -- ) => -- Syntactic (a,b,c,d,e,f) -- where -- {-# SPECIALIZE instance ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , Syntactic e, Domain e ~ dom -- , Syntactic f, Domain f ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- , InjectC Select dom (Internal e) -- , InjectC Select dom (Internal f) -- ) => Syntactic (a,b,c,d,e,f) #-} -- {-# INLINABLE desugar #-} -- {-# INLINABLE sugar #-} -- type Domain (a,b,c,d,e,f) = Domain a -- type Internal (a,b,c,d,e,f) = -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- ) -- -- desugar = uncurryN $ sugarSymC Tup6 -- sugar a = -- ( sugarSymC Sel1 a -- , sugarSymC Sel2 a -- , sugarSymC Sel3 a -- , sugarSymC Sel4 a -- , sugarSymC Sel5 a -- , sugarSymC Sel6 a -- ) -- -- instance -- ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , Syntactic e, Domain e ~ dom -- , Syntactic f, Domain f ~ dom -- , Syntactic g, Domain g ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- , InjectC Select dom (Internal e) -- , InjectC Select dom (Internal f) -- , InjectC Select dom (Internal g) -- ) => -- Syntactic (a,b,c,d,e,f,g) -- where -- {-# SPECIALIZE instance ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , Syntactic e, Domain e ~ dom -- , Syntactic f, Domain f ~ dom -- , Syntactic g, Domain g ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- , InjectC Select dom (Internal e) -- , InjectC Select dom (Internal f) -- , InjectC Select dom (Internal g) -- ) => Syntactic (a,b,c,d,e,f,g) #-} -- {-# INLINABLE desugar #-} -- {-# INLINABLE sugar #-} -- type Domain (a,b,c,d,e,f,g) = Domain a -- type Internal (a,b,c,d,e,f,g) = -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- ) -- -- desugar = uncurryN $ sugarSymC Tup7 -- sugar a = -- ( sugarSymC Sel1 a -- , sugarSymC Sel2 a -- , sugarSymC Sel3 a -- , sugarSymC Sel4 a -- , sugarSymC Sel5 a -- , sugarSymC Sel6 a -- , sugarSymC Sel7 a -- ) -- -- instance -- ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , Syntactic e, Domain e ~ dom -- , Syntactic f, Domain f ~ dom -- , Syntactic g, Domain g ~ dom -- , Syntactic h, Domain h ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- , InjectC Select dom (Internal e) -- , InjectC Select dom (Internal f) -- , InjectC Select dom (Internal g) -- , InjectC Select dom (Internal h) -- ) => -- Syntactic (a,b,c,d,e,f,g,h) -- where -- {-# SPECIALIZE instance ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , Syntactic e, Domain e ~ dom -- , Syntactic f, Domain f ~ dom -- , Syntactic g, Domain g ~ dom -- , Syntactic h, Domain h ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- , InjectC Select dom (Internal e) -- , InjectC Select dom (Internal f) -- , InjectC Select dom (Internal g) -- , InjectC Select dom (Internal h) -- ) => Syntactic (a,b,c,d,e,f,g,h) #-} -- {-# INLINABLE desugar #-} -- {-# INLINABLE sugar #-} -- type Domain (a,b,c,d,e,f,g,h) = Domain a -- type Internal (a,b,c,d,e,f,g,h) = -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- ) -- -- desugar = uncurryN $ sugarSymC Tup8 -- sugar a = -- ( sugarSymC Sel1 a -- , sugarSymC Sel2 a -- , sugarSymC Sel3 a -- , sugarSymC Sel4 a -- , sugarSymC Sel5 a -- , sugarSymC Sel6 a -- , sugarSymC Sel7 a -- , sugarSymC Sel8 a -- ) -- -- instance -- ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , Syntactic e, Domain e ~ dom -- , Syntactic f, Domain f ~ dom -- , Syntactic g, Domain g ~ dom -- , Syntactic h, Domain h ~ dom -- , Syntactic i, Domain i ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- , Internal i -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- , InjectC Select dom (Internal e) -- , InjectC Select dom (Internal f) -- , InjectC Select dom (Internal g) -- , InjectC Select dom (Internal h) -- , InjectC Select dom (Internal i) -- ) => -- Syntactic (a,b,c,d,e,f,g,h,i) -- where -- {-# SPECIALIZE instance ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , Syntactic e, Domain e ~ dom -- , Syntactic f, Domain f ~ dom -- , Syntactic g, Domain g ~ dom -- , Syntactic h, Domain h ~ dom -- , Syntactic i, Domain i ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- , Internal i -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- , InjectC Select dom (Internal e) -- , InjectC Select dom (Internal f) -- , InjectC Select dom (Internal g) -- , InjectC Select dom (Internal h) -- , InjectC Select dom (Internal i) -- ) => Syntactic (a,b,c,d,e,f,g,h,i) #-} -- {-# INLINABLE desugar #-} -- {-# INLINABLE sugar #-} -- type Domain (a,b,c,d,e,f,g,h,i) = Domain a -- type Internal (a,b,c,d,e,f,g,h,i) = -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- , Internal i -- ) -- -- desugar = uncurryN $ sugarSymC Tup9 -- sugar a = -- ( sugarSymC Sel1 a -- , sugarSymC Sel2 a -- , sugarSymC Sel3 a -- , sugarSymC Sel4 a -- , sugarSymC Sel5 a -- , sugarSymC Sel6 a -- , sugarSymC Sel7 a -- , sugarSymC Sel8 a -- , sugarSymC Sel9 a -- ) -- -- instance -- ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , Syntactic e, Domain e ~ dom -- , Syntactic f, Domain f ~ dom -- , Syntactic g, Domain g ~ dom -- , Syntactic h, Domain h ~ dom -- , Syntactic i, Domain i ~ dom -- , Syntactic j, Domain j ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- , Internal i -- , Internal j -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- , InjectC Select dom (Internal e) -- , InjectC Select dom (Internal f) -- , InjectC Select dom (Internal g) -- , InjectC Select dom (Internal h) -- , InjectC Select dom (Internal i) -- , InjectC Select dom (Internal j) -- ) => -- Syntactic (a,b,c,d,e,f,g,h,i,j) -- where -- {-# SPECIALIZE instance ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , Syntactic e, Domain e ~ dom -- , Syntactic f, Domain f ~ dom -- , Syntactic g, Domain g ~ dom -- , Syntactic h, Domain h ~ dom -- , Syntactic i, Domain i ~ dom -- , Syntactic j, Domain j ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- , Internal i -- , Internal j -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- , InjectC Select dom (Internal e) -- , InjectC Select dom (Internal f) -- , InjectC Select dom (Internal g) -- , InjectC Select dom (Internal h) -- , InjectC Select dom (Internal i) -- , InjectC Select dom (Internal j) -- ) => -- Syntactic (a,b,c,d,e,f,g,h,i,j) #-} -- {-# INLINABLE desugar #-} -- {-# INLINABLE sugar #-} -- type Domain (a,b,c,d,e,f,g,h,i,j) = Domain a -- type Internal (a,b,c,d,e,f,g,h,i,j) = -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- , Internal i -- , Internal j -- ) -- -- desugar = uncurryN $ sugarSymC Tup10 -- sugar a = -- ( sugarSymC Sel1 a -- , sugarSymC Sel2 a -- , sugarSymC Sel3 a -- , sugarSymC Sel4 a -- , sugarSymC Sel5 a -- , sugarSymC Sel6 a -- , sugarSymC Sel7 a -- , sugarSymC Sel8 a -- , sugarSymC Sel9 a -- , sugarSymC Sel10 a -- ) -- -- instance -- ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , Syntactic e, Domain e ~ dom -- , Syntactic f, Domain f ~ dom -- , Syntactic g, Domain g ~ dom -- , Syntactic h, Domain h ~ dom -- , Syntactic i, Domain i ~ dom -- , Syntactic j, Domain j ~ dom -- , Syntactic k, Domain k ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- , Internal i -- , Internal j -- , Internal k -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- , InjectC Select dom (Internal e) -- , InjectC Select dom (Internal f) -- , InjectC Select dom (Internal g) -- , InjectC Select dom (Internal h) -- , InjectC Select dom (Internal i) -- , InjectC Select dom (Internal j) -- , InjectC Select dom (Internal k) -- ) => -- Syntactic (a,b,c,d,e,f,g,h,i,j,k) -- where -- {-# SPECIALIZE instance ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , Syntactic e, Domain e ~ dom -- , Syntactic f, Domain f ~ dom -- , Syntactic g, Domain g ~ dom -- , Syntactic h, Domain h ~ dom -- , Syntactic i, Domain i ~ dom -- , Syntactic j, Domain j ~ dom -- , Syntactic k, Domain k ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- , Internal i -- , Internal j -- , Internal k -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- , InjectC Select dom (Internal e) -- , InjectC Select dom (Internal f) -- , InjectC Select dom (Internal g) -- , InjectC Select dom (Internal h) -- , InjectC Select dom (Internal i) -- , InjectC Select dom (Internal j) -- , InjectC Select dom (Internal k) -- ) => Syntactic (a,b,c,d,e,f,g,h,i,j,k) #-} -- {-# INLINABLE desugar #-} -- {-# INLINABLE sugar #-} -- type Domain (a,b,c,d,e,f,g,h,i,j,k) = Domain a -- type Internal (a,b,c,d,e,f,g,h,i,j,k) = -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- , Internal i -- , Internal j -- , Internal k -- ) -- -- desugar = uncurryN $ sugarSymC Tup11 -- sugar a = -- ( sugarSymC Sel1 a -- , sugarSymC Sel2 a -- , sugarSymC Sel3 a -- , sugarSymC Sel4 a -- , sugarSymC Sel5 a -- , sugarSymC Sel6 a -- , sugarSymC Sel7 a -- , sugarSymC Sel8 a -- , sugarSymC Sel9 a -- , sugarSymC Sel10 a -- , sugarSymC Sel11 a -- ) -- -- instance -- ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , Syntactic e, Domain e ~ dom -- , Syntactic f, Domain f ~ dom -- , Syntactic g, Domain g ~ dom -- , Syntactic h, Domain h ~ dom -- , Syntactic i, Domain i ~ dom -- , Syntactic j, Domain j ~ dom -- , Syntactic k, Domain k ~ dom -- , Syntactic l, Domain l ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- , Internal i -- , Internal j -- , Internal k -- , Internal l -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- , InjectC Select dom (Internal e) -- , InjectC Select dom (Internal f) -- , InjectC Select dom (Internal g) -- , InjectC Select dom (Internal h) -- , InjectC Select dom (Internal i) -- , InjectC Select dom (Internal j) -- , InjectC Select dom (Internal k) -- , InjectC Select dom (Internal l) -- ) => -- Syntactic (a,b,c,d,e,f,g,h,i,j,k,l) -- where -- {-# SPECIALIZE instance ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , Syntactic e, Domain e ~ dom -- , Syntactic f, Domain f ~ dom -- , Syntactic g, Domain g ~ dom -- , Syntactic h, Domain h ~ dom -- , Syntactic i, Domain i ~ dom -- , Syntactic j, Domain j ~ dom -- , Syntactic k, Domain k ~ dom -- , Syntactic l, Domain l ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- , Internal i -- , Internal j -- , Internal k -- , Internal l -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- , InjectC Select dom (Internal e) -- , InjectC Select dom (Internal f) -- , InjectC Select dom (Internal g) -- , InjectC Select dom (Internal h) -- , InjectC Select dom (Internal i) -- , InjectC Select dom (Internal j) -- , InjectC Select dom (Internal k) -- , InjectC Select dom (Internal l) -- ) => Syntactic (a,b,c,d,e,f,g,h,i,j,k,l) #-} -- {-# INLINABLE desugar #-} -- {-# INLINABLE sugar #-} -- type Domain (a,b,c,d,e,f,g,h,i,j,k,l) = Domain a -- type Internal (a,b,c,d,e,f,g,h,i,j,k,l) = -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- , Internal i -- , Internal j -- , Internal k -- , Internal l -- ) -- -- desugar = uncurryN $ sugarSymC Tup12 -- sugar a = -- ( sugarSymC Sel1 a -- , sugarSymC Sel2 a -- , sugarSymC Sel3 a -- , sugarSymC Sel4 a -- , sugarSymC Sel5 a -- , sugarSymC Sel6 a -- , sugarSymC Sel7 a -- , sugarSymC Sel8 a -- , sugarSymC Sel9 a -- , sugarSymC Sel10 a -- , sugarSymC Sel11 a -- , sugarSymC Sel12 a -- ) -- -- instance -- ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , Syntactic e, Domain e ~ dom -- , Syntactic f, Domain f ~ dom -- , Syntactic g, Domain g ~ dom -- , Syntactic h, Domain h ~ dom -- , Syntactic i, Domain i ~ dom -- , Syntactic j, Domain j ~ dom -- , Syntactic k, Domain k ~ dom -- , Syntactic l, Domain l ~ dom -- , Syntactic m, Domain m ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- , Internal i -- , Internal j -- , Internal k -- , Internal l -- , Internal m -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- , InjectC Select dom (Internal e) -- , InjectC Select dom (Internal f) -- , InjectC Select dom (Internal g) -- , InjectC Select dom (Internal h) -- , InjectC Select dom (Internal i) -- , InjectC Select dom (Internal j) -- , InjectC Select dom (Internal k) -- , InjectC Select dom (Internal l) -- , InjectC Select dom (Internal m) -- ) => -- Syntactic (a,b,c,d,e,f,g,h,i,j,k,l,m) -- where -- {-# SPECIALIZE instance ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , Syntactic e, Domain e ~ dom -- , Syntactic f, Domain f ~ dom -- , Syntactic g, Domain g ~ dom -- , Syntactic h, Domain h ~ dom -- , Syntactic i, Domain i ~ dom -- , Syntactic j, Domain j ~ dom -- , Syntactic k, Domain k ~ dom -- , Syntactic l, Domain l ~ dom -- , Syntactic m, Domain m ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- , Internal i -- , Internal j -- , Internal k -- , Internal l -- , Internal m -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- , InjectC Select dom (Internal e) -- , InjectC Select dom (Internal f) -- , InjectC Select dom (Internal g) -- , InjectC Select dom (Internal h) -- , InjectC Select dom (Internal i) -- , InjectC Select dom (Internal j) -- , InjectC Select dom (Internal k) -- , InjectC Select dom (Internal l) -- , InjectC Select dom (Internal m) -- ) => Syntactic (a,b,c,d,e,f,g,h,i,j,k,l,m) #-} -- {-# INLINABLE desugar #-} -- {-# INLINABLE sugar #-} -- type Domain (a,b,c,d,e,f,g,h,i,j,k,l,m) = Domain a -- type Internal (a,b,c,d,e,f,g,h,i,j,k,l,m) = -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- , Internal i -- , Internal j -- , Internal k -- , Internal l -- , Internal m -- ) -- -- desugar = uncurryN $ sugarSymC Tup13 -- sugar a = -- ( sugarSymC Sel1 a -- , sugarSymC Sel2 a -- , sugarSymC Sel3 a -- , sugarSymC Sel4 a -- , sugarSymC Sel5 a -- , sugarSymC Sel6 a -- , sugarSymC Sel7 a -- , sugarSymC Sel8 a -- , sugarSymC Sel9 a -- , sugarSymC Sel10 a -- , sugarSymC Sel11 a -- , sugarSymC Sel12 a -- , sugarSymC Sel13 a -- ) -- -- instance -- ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , Syntactic e, Domain e ~ dom -- , Syntactic f, Domain f ~ dom -- , Syntactic g, Domain g ~ dom -- , Syntactic h, Domain h ~ dom -- , Syntactic i, Domain i ~ dom -- , Syntactic j, Domain j ~ dom -- , Syntactic k, Domain k ~ dom -- , Syntactic l, Domain l ~ dom -- , Syntactic m, Domain m ~ dom -- , Syntactic n, Domain n ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- , Internal i -- , Internal j -- , Internal k -- , Internal l -- , Internal m -- , Internal n -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- , InjectC Select dom (Internal e) -- , InjectC Select dom (Internal f) -- , InjectC Select dom (Internal g) -- , InjectC Select dom (Internal h) -- , InjectC Select dom (Internal i) -- , InjectC Select dom (Internal j) -- , InjectC Select dom (Internal k) -- , InjectC Select dom (Internal l) -- , InjectC Select dom (Internal m) -- , InjectC Select dom (Internal n) -- ) => -- Syntactic (a,b,c,d,e,f,g,h,i,j,k,l,m,n) -- where -- {-# SPECIALIZE instance ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , Syntactic e, Domain e ~ dom -- , Syntactic f, Domain f ~ dom -- , Syntactic g, Domain g ~ dom -- , Syntactic h, Domain h ~ dom -- , Syntactic i, Domain i ~ dom -- , Syntactic j, Domain j ~ dom -- , Syntactic k, Domain k ~ dom -- , Syntactic l, Domain l ~ dom -- , Syntactic m, Domain m ~ dom -- , Syntactic n, Domain n ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- , Internal i -- , Internal j -- , Internal k -- , Internal l -- , Internal m -- , Internal n -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- , InjectC Select dom (Internal e) -- , InjectC Select dom (Internal f) -- , InjectC Select dom (Internal g) -- , InjectC Select dom (Internal h) -- , InjectC Select dom (Internal i) -- , InjectC Select dom (Internal j) -- , InjectC Select dom (Internal k) -- , InjectC Select dom (Internal l) -- , InjectC Select dom (Internal m) -- , InjectC Select dom (Internal n) -- ) => Syntactic (a,b,c,d,e,f,g,h,i,j,k,l,m,n) #-} -- {-# INLINABLE desugar #-} -- {-# INLINABLE sugar #-} -- type Domain (a,b,c,d,e,f,g,h,i,j,k,l,m,n) = Domain a -- type Internal (a,b,c,d,e,f,g,h,i,j,k,l,m,n) = -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- , Internal i -- , Internal j -- , Internal k -- , Internal l -- , Internal m -- , Internal n -- ) -- -- desugar = uncurryN $ sugarSymC Tup14 -- sugar a = -- ( sugarSymC Sel1 a -- , sugarSymC Sel2 a -- , sugarSymC Sel3 a -- , sugarSymC Sel4 a -- , sugarSymC Sel5 a -- , sugarSymC Sel6 a -- , sugarSymC Sel7 a -- , sugarSymC Sel8 a -- , sugarSymC Sel9 a -- , sugarSymC Sel10 a -- , sugarSymC Sel11 a -- , sugarSymC Sel12 a -- , sugarSymC Sel13 a -- , sugarSymC Sel14 a -- ) -- -- -- instance -- ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , Syntactic e, Domain e ~ dom -- , Syntactic f, Domain f ~ dom -- , Syntactic g, Domain g ~ dom -- , Syntactic h, Domain h ~ dom -- , Syntactic i, Domain i ~ dom -- , Syntactic j, Domain j ~ dom -- , Syntactic k, Domain k ~ dom -- , Syntactic l, Domain l ~ dom -- , Syntactic m, Domain m ~ dom -- , Syntactic n, Domain n ~ dom -- , Syntactic o, Domain o ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- , Internal i -- , Internal j -- , Internal k -- , Internal l -- , Internal m -- , Internal n -- , Internal o -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- , InjectC Select dom (Internal e) -- , InjectC Select dom (Internal f) -- , InjectC Select dom (Internal g) -- , InjectC Select dom (Internal h) -- , InjectC Select dom (Internal i) -- , InjectC Select dom (Internal j) -- , InjectC Select dom (Internal k) -- , InjectC Select dom (Internal l) -- , InjectC Select dom (Internal m) -- , InjectC Select dom (Internal n) -- , InjectC Select dom (Internal o) -- ) => -- Syntactic (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) -- where -- {-# SPECIALIZE instance ( Syntactic a, Domain a ~ dom -- , Syntactic b, Domain b ~ dom -- , Syntactic c, Domain c ~ dom -- , Syntactic d, Domain d ~ dom -- , Syntactic e, Domain e ~ dom -- , Syntactic f, Domain f ~ dom -- , Syntactic g, Domain g ~ dom -- , Syntactic h, Domain h ~ dom -- , Syntactic i, Domain i ~ dom -- , Syntactic j, Domain j ~ dom -- , Syntactic k, Domain k ~ dom -- , Syntactic l, Domain l ~ dom -- , Syntactic m, Domain m ~ dom -- , Syntactic n, Domain n ~ dom -- , Syntactic o, Domain o ~ dom -- , InjectC Tuple dom -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- , Internal i -- , Internal j -- , Internal k -- , Internal l -- , Internal m -- , Internal n -- , Internal o -- ) -- , InjectC Select dom (Internal a) -- , InjectC Select dom (Internal b) -- , InjectC Select dom (Internal c) -- , InjectC Select dom (Internal d) -- , InjectC Select dom (Internal e) -- , InjectC Select dom (Internal f) -- , InjectC Select dom (Internal g) -- , InjectC Select dom (Internal h) -- , InjectC Select dom (Internal i) -- , InjectC Select dom (Internal j) -- , InjectC Select dom (Internal k) -- , InjectC Select dom (Internal l) -- , InjectC Select dom (Internal m) -- , InjectC Select dom (Internal n) -- , InjectC Select dom (Internal o) -- ) => Syntactic (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) #-} -- {-# INLINABLE desugar #-} -- {-# INLINABLE sugar #-} -- type Domain (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) = Domain a -- type Internal (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) = -- ( Internal a -- , Internal b -- , Internal c -- , Internal d -- , Internal e -- , Internal f -- , Internal g -- , Internal h -- , Internal i -- , Internal j -- , Internal k -- , Internal l -- , Internal m -- , Internal n -- , Internal o -- ) -- -- desugar = uncurryN $ sugarSymC Tup15 -- sugar a = -- ( sugarSymC Sel1 a -- , sugarSymC Sel2 a -- , sugarSymC Sel3 a -- , sugarSymC Sel4 a -- , sugarSymC Sel5 a -- , sugarSymC Sel6 a -- , sugarSymC Sel7 a -- , sugarSymC Sel8 a -- , sugarSymC Sel9 a -- , sugarSymC Sel10 a -- , sugarSymC Sel11 a -- , sugarSymC Sel12 a -- , sugarSymC Sel13 a -- , sugarSymC Sel14 a -- , sugarSymC Sel15 a -- )