module Language.Syntactic.Frontend.TupleConstrained
( TupleSat
) where
import Data.Constraint
import Data.Tuple.Curry
import Language.Syntactic
import Language.Syntactic.Constructs.Tuple
class TupleSat (dom :: * -> *) (p :: * -> Constraint) | dom -> p
instance TupleSat (Tuple :|| p) p
instance TupleSat ((Tuple :|| p) :+: dom2) p
instance TupleSat (Select :|| p) p
instance TupleSat ((Select :|| p) :+: dom2) p
instance TupleSat dom p => TupleSat (dom :| q) p
instance TupleSat dom p => TupleSat (dom :|| q) p
instance TupleSat dom2 p => TupleSat (dom1 :+: dom2) p
sugarSymC' :: forall sym dom sig b c p
. ( TupleSat dom p
, p (DenResult sig)
, InjectC (sym :|| p) (AST dom) (DenResult sig)
, ApplySym sig b dom
, SyntacticN c b
)
=> sym sig -> c
sugarSymC' s = sugarSymC (C' s :: (sym :|| p) sig)
instance
( Syntactic a, Domain a ~ dom
, Syntactic b, Domain b ~ dom
, TupleSat dom p
, p (Internal a, Internal b)
, p (Internal a)
, p (Internal b)
, InjectC (Tuple :|| p) dom
( Internal a
, Internal b
)
, InjectC (Select :|| p) dom (Internal a)
, InjectC (Select :|| p) 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
, TupleSat dom p
, p ( Internal a
, Internal b
, Internal c
)
, p (Internal a)
, p (Internal b)
, p (Internal c)
, InjectC (Tuple :|| p) dom
( Internal a
, Internal b
, Internal c
)
, InjectC (Select :|| p) dom (Internal a)
, InjectC (Select :|| p) dom (Internal b)
, InjectC (Select :|| p) 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
, TupleSat dom p
, p ( Internal a
, Internal b
, Internal c
, Internal d
)
, p (Internal a)
, p (Internal b)
, p (Internal c)
, p (Internal d)
, InjectC (Tuple :|| p) dom
( Internal a
, Internal b
, Internal c
, Internal d
)
, InjectC (Select :|| p) dom (Internal a)
, InjectC (Select :|| p) dom (Internal b)
, InjectC (Select :|| p) dom (Internal c)
, InjectC (Select :|| p) 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
, TupleSat dom p
, p ( Internal a
, Internal b
, Internal c
, Internal d
, Internal e
)
, p (Internal a)
, p (Internal b)
, p (Internal c)
, p (Internal d)
, p (Internal e)
, InjectC (Tuple :|| p) dom
( Internal a
, Internal b
, Internal c
, Internal d
, Internal e
)
, InjectC (Select :|| p) dom (Internal a)
, InjectC (Select :|| p) dom (Internal b)
, InjectC (Select :|| p) dom (Internal c)
, InjectC (Select :|| p) dom (Internal d)
, InjectC (Select :|| p) 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
, TupleSat dom p
, p ( Internal a
, Internal b
, Internal c
, Internal d
, Internal e
, Internal f
)
, p (Internal a)
, p (Internal b)
, p (Internal c)
, p (Internal d)
, p (Internal e)
, p (Internal f)
, InjectC (Tuple :|| p) dom
( Internal a
, Internal b
, Internal c
, Internal d
, Internal e
, Internal f
)
, InjectC (Select :|| p) dom (Internal a)
, InjectC (Select :|| p) dom (Internal b)
, InjectC (Select :|| p) dom (Internal c)
, InjectC (Select :|| p) dom (Internal d)
, InjectC (Select :|| p) dom (Internal e)
, InjectC (Select :|| p) 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
, TupleSat dom p
, p ( Internal a
, Internal b
, Internal c
, Internal d
, Internal e
, Internal f
, Internal g
)
, p (Internal a)
, p (Internal b)
, p (Internal c)
, p (Internal d)
, p (Internal e)
, p (Internal f)
, p (Internal g)
, InjectC (Tuple :|| p) dom
( Internal a
, Internal b
, Internal c
, Internal d
, Internal e
, Internal f
, Internal g
)
, InjectC (Select :|| p) dom (Internal a)
, InjectC (Select :|| p) dom (Internal b)
, InjectC (Select :|| p) dom (Internal c)
, InjectC (Select :|| p) dom (Internal d)
, InjectC (Select :|| p) dom (Internal e)
, InjectC (Select :|| p) dom (Internal f)
, InjectC (Select :|| p) 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
, TupleSat dom p
, p ( Internal a
, Internal b
, Internal c
, Internal d
, Internal e
, Internal f
, Internal g
, Internal h
)
, p (Internal a)
, p (Internal b)
, p (Internal c)
, p (Internal d)
, p (Internal e)
, p (Internal f)
, p (Internal g)
, p (Internal h)
, InjectC (Tuple :|| p) dom
( Internal a
, Internal b
, Internal c
, Internal d
, Internal e
, Internal f
, Internal g
, Internal h
)
, InjectC (Select :|| p) dom (Internal a)
, InjectC (Select :|| p) dom (Internal b)
, InjectC (Select :|| p) dom (Internal c)
, InjectC (Select :|| p) dom (Internal d)
, InjectC (Select :|| p) dom (Internal e)
, InjectC (Select :|| p) dom (Internal f)
, InjectC (Select :|| p) dom (Internal g)
, InjectC (Select :|| p) 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
, TupleSat dom p
, p ( Internal a
, Internal b
, Internal c
, Internal d
, Internal e
, Internal f
, Internal g
, Internal h
, Internal i
)
, p (Internal a)
, p (Internal b)
, p (Internal c)
, p (Internal d)
, p (Internal e)
, p (Internal f)
, p (Internal g)
, p (Internal h)
, p (Internal i)
, InjectC (Tuple :|| p) dom
( Internal a
, Internal b
, Internal c
, Internal d
, Internal e
, Internal f
, Internal g
, Internal h
, Internal i
)
, InjectC (Select :|| p) dom (Internal a)
, InjectC (Select :|| p) dom (Internal b)
, InjectC (Select :|| p) dom (Internal c)
, InjectC (Select :|| p) dom (Internal d)
, InjectC (Select :|| p) dom (Internal e)
, InjectC (Select :|| p) dom (Internal f)
, InjectC (Select :|| p) dom (Internal g)
, InjectC (Select :|| p) dom (Internal h)
, InjectC (Select :|| p) 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
, TupleSat dom p
, p ( Internal a
, Internal b
, Internal c
, Internal d
, Internal e
, Internal f
, Internal g
, Internal h
, Internal i
, Internal j
)
, p (Internal a)
, p (Internal b)
, p (Internal c)
, p (Internal d)
, p (Internal e)
, p (Internal f)
, p (Internal g)
, p (Internal h)
, p (Internal i)
, p (Internal j)
, InjectC (Tuple :|| p) dom
( Internal a
, Internal b
, Internal c
, Internal d
, Internal e
, Internal f
, Internal g
, Internal h
, Internal i
, Internal j
)
, InjectC (Select :|| p) dom (Internal a)
, InjectC (Select :|| p) dom (Internal b)
, InjectC (Select :|| p) dom (Internal c)
, InjectC (Select :|| p) dom (Internal d)
, InjectC (Select :|| p) dom (Internal e)
, InjectC (Select :|| p) dom (Internal f)
, InjectC (Select :|| p) dom (Internal g)
, InjectC (Select :|| p) dom (Internal h)
, InjectC (Select :|| p) dom (Internal i)
, InjectC (Select :|| p) 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
, TupleSat dom p
, p ( Internal a
, Internal b
, Internal c
, Internal d
, Internal e
, Internal f
, Internal g
, Internal h
, Internal i
, Internal j
, Internal k
)
, p (Internal a)
, p (Internal b)
, p (Internal c)
, p (Internal d)
, p (Internal e)
, p (Internal f)
, p (Internal g)
, p (Internal h)
, p (Internal i)
, p (Internal j)
, p (Internal k)
, InjectC (Tuple :|| p) 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 :|| p) dom (Internal a)
, InjectC (Select :|| p) dom (Internal b)
, InjectC (Select :|| p) dom (Internal c)
, InjectC (Select :|| p) dom (Internal d)
, InjectC (Select :|| p) dom (Internal e)
, InjectC (Select :|| p) dom (Internal f)
, InjectC (Select :|| p) dom (Internal g)
, InjectC (Select :|| p) dom (Internal h)
, InjectC (Select :|| p) dom (Internal i)
, InjectC (Select :|| p) dom (Internal j)
, InjectC (Select :|| p) 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
, TupleSat dom p
, p ( Internal a
, Internal b
, Internal c
, Internal d
, Internal e
, Internal f
, Internal g
, Internal h
, Internal i
, Internal j
, Internal k
, Internal l
)
, p (Internal a)
, p (Internal b)
, p (Internal c)
, p (Internal d)
, p (Internal e)
, p (Internal f)
, p (Internal g)
, p (Internal h)
, p (Internal i)
, p (Internal j)
, p (Internal k)
, p (Internal l)
, InjectC (Tuple :|| p) 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 :|| p) dom (Internal a)
, InjectC (Select :|| p) dom (Internal b)
, InjectC (Select :|| p) dom (Internal c)
, InjectC (Select :|| p) dom (Internal d)
, InjectC (Select :|| p) dom (Internal e)
, InjectC (Select :|| p) dom (Internal f)
, InjectC (Select :|| p) dom (Internal g)
, InjectC (Select :|| p) dom (Internal h)
, InjectC (Select :|| p) dom (Internal i)
, InjectC (Select :|| p) dom (Internal j)
, InjectC (Select :|| p) dom (Internal k)
, InjectC (Select :|| p) 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
, TupleSat dom p
, p ( 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
)
, p (Internal a)
, p (Internal b)
, p (Internal c)
, p (Internal d)
, p (Internal e)
, p (Internal f)
, p (Internal g)
, p (Internal h)
, p (Internal i)
, p (Internal j)
, p (Internal k)
, p (Internal l)
, p (Internal m)
, InjectC (Tuple :|| p) 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 :|| p) dom (Internal a)
, InjectC (Select :|| p) dom (Internal b)
, InjectC (Select :|| p) dom (Internal c)
, InjectC (Select :|| p) dom (Internal d)
, InjectC (Select :|| p) dom (Internal e)
, InjectC (Select :|| p) dom (Internal f)
, InjectC (Select :|| p) dom (Internal g)
, InjectC (Select :|| p) dom (Internal h)
, InjectC (Select :|| p) dom (Internal i)
, InjectC (Select :|| p) dom (Internal j)
, InjectC (Select :|| p) dom (Internal k)
, InjectC (Select :|| p) dom (Internal l)
, InjectC (Select :|| p) 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
, TupleSat dom p
, p ( 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
)
, p (Internal a)
, p (Internal b)
, p (Internal c)
, p (Internal d)
, p (Internal e)
, p (Internal f)
, p (Internal g)
, p (Internal h)
, p (Internal i)
, p (Internal j)
, p (Internal k)
, p (Internal l)
, p (Internal m)
, p (Internal n)
, InjectC (Tuple :|| p) 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 :|| p) dom (Internal a)
, InjectC (Select :|| p) dom (Internal b)
, InjectC (Select :|| p) dom (Internal c)
, InjectC (Select :|| p) dom (Internal d)
, InjectC (Select :|| p) dom (Internal e)
, InjectC (Select :|| p) dom (Internal f)
, InjectC (Select :|| p) dom (Internal g)
, InjectC (Select :|| p) dom (Internal h)
, InjectC (Select :|| p) dom (Internal i)
, InjectC (Select :|| p) dom (Internal j)
, InjectC (Select :|| p) dom (Internal k)
, InjectC (Select :|| p) dom (Internal l)
, InjectC (Select :|| p) dom (Internal m)
, InjectC (Select :|| p) 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
, TupleSat dom p
, p ( 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
)
, p (Internal a)
, p (Internal b)
, p (Internal c)
, p (Internal d)
, p (Internal e)
, p (Internal f)
, p (Internal g)
, p (Internal h)
, p (Internal i)
, p (Internal j)
, p (Internal k)
, p (Internal l)
, p (Internal m)
, p (Internal n)
, p (Internal o)
, InjectC (Tuple :|| p) 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 :|| p) dom (Internal a)
, InjectC (Select :|| p) dom (Internal b)
, InjectC (Select :|| p) dom (Internal c)
, InjectC (Select :|| p) dom (Internal d)
, InjectC (Select :|| p) dom (Internal e)
, InjectC (Select :|| p) dom (Internal f)
, InjectC (Select :|| p) dom (Internal g)
, InjectC (Select :|| p) dom (Internal h)
, InjectC (Select :|| p) dom (Internal i)
, InjectC (Select :|| p) dom (Internal j)
, InjectC (Select :|| p) dom (Internal k)
, InjectC (Select :|| p) dom (Internal l)
, InjectC (Select :|| p) dom (Internal m)
, InjectC (Select :|| p) dom (Internal n)
, InjectC (Select :|| p) 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
)