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
type Domain (a,b) = Domain a
type Internal (a,b) =
( Internal a
, Internal b
)
desugar = uncurryN $ sugarSymC Tup2
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
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
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
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
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
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
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
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
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
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
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
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
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
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
)