module Language.Syntactic.Features.TupleSyntactic where
import Language.Syntactic.Syntax
import Language.Syntactic.Features.Tuple
instance
( Syntactic a dom
, Syntactic b dom
, Tuple :<: dom
, Select :<: dom
) =>
Syntactic (a,b) dom
where
type Internal (a,b) =
( Internal a
, Internal b
)
desugar (a,b) = inject Tup2
:$: desugar a
:$: desugar b
sugar a =
( sugar $ inject Sel1 :$: a
, sugar $ inject Sel2 :$: a
)
instance
( Syntactic a dom
, Syntactic b dom
, Syntactic c dom
, Tuple :<: dom
, Select :<: dom
) =>
Syntactic (a,b,c) dom
where
type Internal (a,b,c) =
( Internal a
, Internal b
, Internal c
)
desugar (a,b,c) = inject Tup3
:$: desugar a
:$: desugar b
:$: desugar c
sugar a =
( sugar $ inject Sel1 :$: a
, sugar $ inject Sel2 :$: a
, sugar $ inject Sel3 :$: a
)
instance
( Syntactic a dom
, Syntactic b dom
, Syntactic c dom
, Syntactic d dom
, Tuple :<: dom
, Select :<: dom
) =>
Syntactic (a,b,c,d) dom
where
type Internal (a,b,c,d) =
( Internal a
, Internal b
, Internal c
, Internal d
)
desugar (a,b,c,d) = inject Tup4
:$: desugar a
:$: desugar b
:$: desugar c
:$: desugar d
sugar a =
( sugar $ inject Sel1 :$: a
, sugar $ inject Sel2 :$: a
, sugar $ inject Sel3 :$: a
, sugar $ inject Sel4 :$: a
)
instance
( Syntactic a dom
, Syntactic b dom
, Syntactic c dom
, Syntactic d dom
, Syntactic e dom
, Tuple :<: dom
, Select :<: dom
) =>
Syntactic (a,b,c,d,e) dom
where
type Internal (a,b,c,d,e) =
( Internal a
, Internal b
, Internal c
, Internal d
, Internal e
)
desugar (a,b,c,d,e) = inject Tup5
:$: desugar a
:$: desugar b
:$: desugar c
:$: desugar d
:$: desugar e
sugar a =
( sugar $ inject Sel1 :$: a
, sugar $ inject Sel2 :$: a
, sugar $ inject Sel3 :$: a
, sugar $ inject Sel4 :$: a
, sugar $ inject Sel5 :$: a
)
instance
( Syntactic a dom
, Syntactic b dom
, Syntactic c dom
, Syntactic d dom
, Syntactic e dom
, Syntactic f dom
, Tuple :<: dom
, Select :<: dom
) =>
Syntactic (a,b,c,d,e,f) dom
where
type Internal (a,b,c,d,e,f) =
( Internal a
, Internal b
, Internal c
, Internal d
, Internal e
, Internal f
)
desugar (a,b,c,d,e,f) = inject Tup6
:$: desugar a
:$: desugar b
:$: desugar c
:$: desugar d
:$: desugar e
:$: desugar f
sugar a =
( sugar $ inject Sel1 :$: a
, sugar $ inject Sel2 :$: a
, sugar $ inject Sel3 :$: a
, sugar $ inject Sel4 :$: a
, sugar $ inject Sel5 :$: a
, sugar $ inject Sel6 :$: a
)
instance
( Syntactic a dom
, Syntactic b dom
, Syntactic c dom
, Syntactic d dom
, Syntactic e dom
, Syntactic f dom
, Syntactic g dom
, Tuple :<: dom
, Select :<: dom
) =>
Syntactic (a,b,c,d,e,f,g) dom
where
type Internal (a,b,c,d,e,f,g) =
( Internal a
, Internal b
, Internal c
, Internal d
, Internal e
, Internal f
, Internal g
)
desugar (a,b,c,d,e,f,g) = inject Tup7
:$: desugar a
:$: desugar b
:$: desugar c
:$: desugar d
:$: desugar e
:$: desugar f
:$: desugar g
sugar a =
( sugar $ inject Sel1 :$: a
, sugar $ inject Sel2 :$: a
, sugar $ inject Sel3 :$: a
, sugar $ inject Sel4 :$: a
, sugar $ inject Sel5 :$: a
, sugar $ inject Sel6 :$: a
, sugar $ inject Sel7 :$: a
)