module Data.Record.Field.Tuple
(
) where
import Data.Record.Field.Basic
import Data.Record.Field.Combinators
import Data.Record.Label hiding ((=:))
instance (Field f, r ~ Src f) => Field (r :-> a, f) where
type Src (r :-> a, f) = r
type Dst (r :-> a, f) = (a, Dst f)
field (l1, f) = lens get set
where get r = (getL l1 r, getL l2 r)
set (a, b) = setL l2 b . setL l1 a
l2 = field f
instance Field (r :-> a, r :-> b, r :-> c) where
type Src (r :-> a, r :-> b, r :-> c) = r
type Dst (r :-> a, r :-> b, r :-> c) = (a, b, c)
field (r1, r2, r3) = lens get set
where get r = (getL r1 r, getL r2 r, getL r3 r)
set (a, b, c) = setL r1 a . setL r2 b . setL r3 c
instance Field (r :-> a, r :-> b, r :-> c, r :-> d) where
type Src (r :-> a, r :-> b, r :-> c, r :-> d) = r
type Dst (r :-> a, r :-> b, r :-> c, r :-> d) = (a, b, c, d)
field (r1, r2, r3, r4) = lens get set
where get r = (getL r1 r, getL r2 r, getL r3 r, getL r4 r)
set (a, b, c, d) = setL r1 a . setL r2 b . setL r3 c . setL r4 d
instance Field (r :-> a, r :-> b, r :-> c, r :-> d, r :-> e) where
type Src (r :-> a, r :-> b, r :-> c, r :-> d, r :-> e) = r
type Dst (r :-> a, r :-> b, r :-> c, r :-> d, r :-> e) = (a,
b,
c,
d,
e)
field (r1, r2, r3, r4, r5) = lens get set
where get r = (getL r1 r,
getL r2 r,
getL r3 r,
getL r4 r,
getL r5 r)
set (a, b, c, d, e) = setL r1 a .
setL r2 b .
setL r3 c .
setL r4 d .
setL r5 e
instance Field (r :-> a,
r :-> b,
r :-> c,
r :-> d,
r :-> e,
r :-> f) where
type Src (r :-> a, r :-> b, r :-> c, r :-> d, r :-> e, r :-> f) = r
type Dst (r :-> a,
r :-> b,
r :-> c,
r :-> d,
r :-> e,
r :-> f) = (a, b, c, d, e, f)
field (r1, r2, r3, r4, r5, r6) = lens get set
where get r = (getL r1 r,
getL r2 r,
getL r3 r,
getL r4 r,
getL r5 r,
getL r6 r)
set (a, b, c, d, e, f) = setL r1 a .
setL r2 b .
setL r3 c .
setL r4 d .
setL r5 e .
setL r6 f
instance Field (r :-> a,
r :-> b,
r :-> c,
r :-> d,
r :-> e,
r :-> f,
r :-> g) where
type Src (r :-> a,
r :-> b,
r :-> c,
r :-> d,
r :-> e,
r :-> f,
r :-> g) = r
type Dst (r :-> a,
r :-> b,
r :-> c,
r :-> d,
r :-> e,
r :-> f,
r :-> g) = (a, b, c, d, e, f, g)
field (r1, r2, r3, r4, r5, r6, r7) = lens get set
where get r = (getL r1 r,
getL r2 r,
getL r3 r,
getL r4 r,
getL r5 r,
getL r6 r,
getL r7 r)
set (a, b, c, d, e, f, g) = setL r1 a .
setL r2 b .
setL r3 c .
setL r4 d .
setL r5 e .
setL r6 f .
setL r7 g
instance Field (r :-> a,
r :-> b,
r :-> c,
r :-> d,
r :-> e,
r :-> f,
r :-> g,
r :-> h) where
type Src (r :-> a,
r :-> b,
r :-> c,
r :-> d,
r :-> e,
r :-> f,
r :-> g,
r :-> h) = r
type Dst (r :-> a,
r :-> b,
r :-> c,
r :-> d,
r :-> e,
r :-> f,
r :-> g,
r :-> h) = (a, b, c, d, e, f, g, h)
field (r1, r2, r3, r4, r5, r6, r7, r8) = lens get set
where get r = (getL r1 r,
getL r2 r,
getL r3 r,
getL r4 r,
getL r5 r,
getL r6 r,
getL r7 r,
getL r8 r)
set (a, b, c, d, e, f, g, h) = setL r1 a .
setL r2 b .
setL r3 c .
setL r4 d .
setL r5 e .
setL r6 f .
setL r7 g .
setL r8 h
instance Field (r :-> a,
r :-> b,
r :-> c,
r :-> d,
r :-> e,
r :-> f,
r :-> g,
r :-> h,
r :-> i) where
type Src (r :-> a,
r :-> b,
r :-> c,
r :-> d,
r :-> e,
r :-> f,
r :-> g,
r :-> h,
r :-> i) = r
type Dst (r :-> a,
r :-> b,
r :-> c,
r :-> d,
r :-> e,
r :-> f,
r :-> g,
r :-> h,
r :-> i) = (a, b, c, d, e, f, g, h, i)
field (r1, r2, r3, r4, r5, r6, r7, r8, r9) = lens get set
where get r = (getL r1 r,
getL r2 r,
getL r3 r,
getL r4 r,
getL r5 r,
getL r6 r,
getL r7 r,
getL r8 r,
getL r9 r)
set (a, b, c, d, e, f, g, h, i) = setL r1 a .
setL r2 b .
setL r3 c .
setL r4 d .
setL r5 e .
setL r6 f .
setL r7 g .
setL r8 h .
setL r9 i
instance Field (r :-> a,
r :-> b,
r :-> c,
r :-> d,
r :-> e,
r :-> f,
r :-> g,
r :-> h,
r :-> i,
r :-> j) where
type Src (r :-> a,
r :-> b,
r :-> c,
r :-> d,
r :-> e,
r :-> f,
r :-> g,
r :-> h,
r :-> i,
r :-> j) = r
type Dst (r :-> a,
r :-> b,
r :-> c,
r :-> d,
r :-> e,
r :-> f,
r :-> g,
r :-> h,
r :-> i,
r :-> j) = (a, b, c, d, e, f, g, h, i, j)
field (r1, r2, r3, r4, r5, r6, r7, r8, r9, r10) = lens get set
where get r = (getL r1 r,
getL r2 r,
getL r3 r,
getL r4 r,
getL r5 r,
getL r6 r,
getL r7 r,
getL r8 r,
getL r9 r,
getL r10 r)
set (a, b, c, d, e, f, g, h, i, j) = setL r1 a .
setL r2 b .
setL r3 c .
setL r4 d .
setL r5 e .
setL r6 f .
setL r7 g .
setL r8 h .
setL r9 i .
setL r10 j