on master help sign in
init
commit21972587adbc51da7c8eb517040ccf2d4d20baa5 authoriko <mail@iko.soy> dateSat 10 May 2025, 20:36 (1 year ago)
12 files changed+1768
unifiedsplit
.gitignore+2 .helix/languages.toml+25 flake.lock+59 flake.nix+24 package.yaml+76 src/Demo.hs+51 src/JRec.hs+150 src/JRec/Internal.hs+786 src/JRec/Tuple.hs+262 src/ProjectM37.hs+246 stack.yaml+19 stack.yaml.lock+68
.gitignorenew file+2
@@ -0,0 +1,2 @@
1+.stack-work
2+project-m37.cabal
.helix/languages.tomlnew file+25
@@ -0,0 +1,25 @@
1+[language-server.dhall-lsp]
2+name = "Dhall LSP"
3+command = "dhall-lsp-server"
4+
5+
6+[[language]]
7+name = "haskell"
8+auto-format = true
9+
10+[[language]]
11+name = "nix"
12+auto-format = true
13+formatter = { command = "nixfmt" }
14+
15+[[language]]
16+auto-format = true
17+name = "dhall"
18+scope = "source.dhall"
19+injection-regex = "dhall"
20+file-types = ["dhall"]
21+roots = []
22+comment-token = "--"
23+indent = { tab-width = 2, unit = " " }
24+language-servers = ["dhall-lsp"]
25+formatter = { command = "dhall" , args = ["format"] }
flake.locknew file+59
@@ -0,0 +1,59 @@
1+{
2+ "nodes": {
3+ "flake-utils": {
4+ "inputs": {
5+ "systems": "systems"
6+ },
7+ "locked": {
8+ "lastModified": 1731533236,
9+ "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
10+ "owner": "numtide",
11+ "repo": "flake-utils",
12+ "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
13+ "type": "github"
14+ },
15+ "original": {
16+ "id": "flake-utils",
17+ "type": "indirect"
18+ }
19+ },
20+ "nixpkgs": {
21+ "locked": {
22+ "lastModified": 1746328495,
23+ "narHash": "sha256-uKCfuDs7ZM3QpCE/jnfubTg459CnKnJG/LwqEVEdEiw=",
24+ "owner": "NixOS",
25+ "repo": "nixpkgs",
26+ "rev": "979daf34c8cacebcd917d540070b52a3c2b9b16e",
27+ "type": "github"
28+ },
29+ "original": {
30+ "id": "nixpkgs",
31+ "ref": "nixos-unstable",
32+ "type": "indirect"
33+ }
34+ },
35+ "root": {
36+ "inputs": {
37+ "flake-utils": "flake-utils",
38+ "nixpkgs": "nixpkgs"
39+ }
40+ },
41+ "systems": {
42+ "locked": {
43+ "lastModified": 1681028828,
44+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
45+ "owner": "nix-systems",
46+ "repo": "default",
47+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
48+ "type": "github"
49+ },
50+ "original": {
51+ "owner": "nix-systems",
52+ "repo": "default",
53+ "type": "github"
54+ }
55+ }
56+ },
57+ "root": "root",
58+ "version": 7
59+}
flake.nixnew file+24
@@ -0,0 +1,24 @@
1+{
2+ inputs = {
3+ nixpkgs.url = "nixpkgs/nixos-unstable";
4+ flake-utils.url = "flake-utils";
5+ };
6+
7+ outputs = { self, flake-utils, nixpkgs }:
8+ let
9+ supportedSystems =
10+ [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" "aarch64-linux" ];
11+ compilerVersion = "966";
12+ in flake-utils.lib.eachSystem supportedSystems (system:
13+ let pkgs = import nixpkgs { inherit system; };
14+ in {
15+ devShells.default = pkgs.mkShell {
16+ buildInputs = with pkgs; [
17+ haskell.compiler."ghc${compilerVersion}"
18+ (pkgs.haskell-language-server.override {
19+ supportedGhcVersions = [ compilerVersion ];
20+ })
21+ ];
22+ };
23+ });
24+}
package.yamlnew file+76
@@ -0,0 +1,76 @@
1+name: project-m37
2+
3+library:
4+ source-dirs: src
5+ dependencies:
6+ - project-m36
7+ - deepseq
8+ - base
9+ - ghc-prim
10+ - aeson
11+ - text
12+ - constraints
13+ - lattices
14+ - vector
15+ - containers
16+ - exceptions
17+ - QuickCheck
18+
19+default-extensions:
20+ - DefaultSignatures
21+ - DataKinds
22+ - MultiParamTypeClasses
23+ - OverloadedRecordDot
24+ - DerivingStrategies
25+ - DerivingVia
26+ - DeriveAnyClass
27+ - DuplicateRecordFields
28+ - OverloadedStrings
29+ - ApplicativeDo
30+ - LambdaCase
31+ - UndecidableInstances
32+ - TypeFamilies
33+ - FunctionalDependencies
34+ - ScopedTypeVariables
35+ - QuantifiedConstraints
36+ - OverloadedLabels
37+ - PartialTypeSignatures
38+ - ViewPatterns
39+ - NoFieldSelectors
40+ - NoFieldSelectors
41+ - AllowAmbiguousTypes
42+ - ImpredicativeTypes
43+ - MultiWayIf
44+ - PackageImports
45+ - RoleAnnotations
46+ - BangPatterns
47+ - MagicHash
48+ - UnboxedTuples
49+ - TypeOperators
50+ - StandaloneDeriving
51+ - TypeApplications
52+ - PolyKinds
53+ - TupleSections
54+ - ExistentialQuantification
55+ - FlexibleInstances
56+ - ConstraintKinds
57+ - FlexibleContexts
58+ - GADTs
59+ - DeriveGeneric
60+ - OverloadedLabels
61+ - ImportQualifiedPost
62+
63+ghc-options: >
64+ -Weverything
65+ -Wno-unsafe
66+ -Wno-missing-safe-haskell-mode
67+ -Wno-missing-import-lists
68+ -Wno-missing-kind-signatures
69+ -Wno-all-missed-specialisations
70+ -Wno-missed-specialisations
71+ -Wno-partial-type-signatures
72+ -Wno-partial-fields
73+ -Wno-operator-whitespace
74+ -Wno-missed-extra-shared-lib
75+ -Wno-implicit-prelude
76+ -threaded
src/Demo.hsnew file+51
@@ -0,0 +1,51 @@
1+module Demo (User (..), Post (..), users, posts, demoConnect) where
2+
3+import Control.Monad.IO.Class
4+import Data.Text (Text)
5+import GHC.Generics (Generic)
6+import ProjectM36.Client.Simple
7+import ProjectM36.DatabaseContext
8+import ProjectM37
9+
10+data User = User
11+ { id :: Int,
12+ name :: Text
13+ }
14+ deriving stock (Generic, Show)
15+
16+instance RelVar User where
17+ relVar = "user"
18+
19+users :: [User]
20+users =
21+ [ User {id = 0, name = "John"},
22+ User {id = 1, name = "Sam"}
23+ ]
24+
25+data Post = Post
26+ { id :: Int,
27+ user :: Int,
28+ contents :: Text
29+ }
30+ deriving stock (Generic, Show)
31+
32+instance RelVar Post where
33+ relVar = "post"
34+
35+posts :: [Post]
36+posts =
37+ [ Post {id = 0, user = 0, contents = "js lds hijhisd"},
38+ Post {id = 1, user = 0, contents = "ijadodhj dsiuhdius"},
39+ Post {id = 2, user = 1, contents = "dskjhdsijdskd"},
40+ Post {id = 3, user = 1, contents = "dj dshdsidsh skj"}
41+ ]
42+
43+demoConnect :: (MonadIO m) => m DbConn
44+demoConnect = liftIO $ do
45+ c <- connect (InProcessConnectionInfo NoPersistence emptyNotificationCallback [] basicDatabaseContext)
46+ run c $ do
47+ define @User
48+ define @Post
49+ insert users
50+ insert posts
51+ pure c
src/JRec.hsnew file+150
@@ -0,0 +1,150 @@
1+{-# LANGUAGE CPP #-}
2+{-# LANGUAGE GADTs #-}
3+{-# LANGUAGE PatternSynonyms #-}
4+{-# LANGUAGE TypeApplications #-}
5+
6+module JRec
7+ ( unField,
8+ (:=) (..),
9+ FldProxy (..),
10+ Tup,
11+ pattern Tup,
12+ append,
13+ union,
14+ insert,
15+ insertOrSet,
16+ R.FromNative,
17+ R.recCopy,
18+ R.get,
19+ R.set,
20+ R.Has,
21+ R.fromNative,
22+ R.rnil,
23+ R.RemoveAccessTo,
24+ R.RecSize,
25+ R.RecCopy,
26+ )
27+where
28+
29+import Data.Proxy
30+import GHC.Exts (Any)
31+import GHC.Generics
32+import GHC.OverloadedLabels
33+import GHC.Records
34+import GHC.TypeLits
35+import JRec.Internal (FldProxy (..), Tup, (:=) (..))
36+import JRec.Internal qualified as R
37+import JRec.Tuple
38+import Unsafe.Coerce
39+
40+----------------------------------------------------------------------------
41+-- unField
42+----------------------------------------------------------------------------
43+
44+unField :: (field ~ field') => R.FldProxy field -> (field' R.:= value) -> value
45+unField _ (_ R.:= value) = value
46+
47+----------------------------------------------------------------------------
48+-- Other operations
49+----------------------------------------------------------------------------
50+
51+-- Appends records, without removing duplicates.
52+--
53+-- O(n + m) type check complexity.
54+--
55+-- FIXME: See spec for a bug when there are duplicates.
56+append ::
57+ forall lhs rhs res.
58+ (res ~ R.RecAppend lhs rhs) =>
59+ Tup lhs ->
60+ Tup rhs ->
61+ Tup res
62+append = R.combine
63+
64+-- Merges records, removing duplicates
65+--
66+-- Left-biased. Does not sort.
67+--
68+-- O(n * m) type check complexity.
69+union ::
70+ forall lhs rhs res.
71+ ( KnownNat (R.RecSize lhs),
72+ KnownNat (R.RecSize rhs),
73+ KnownNat (R.RecSize res),
74+ res ~ R.Union lhs rhs,
75+ R.RecCopy lhs lhs res,
76+ R.RecCopy rhs rhs res
77+ ) =>
78+ Tup lhs ->
79+ Tup rhs ->
80+ Tup res
81+union = R.union
82+
83+-- | Insert a field into a record that does not already contain it
84+--
85+-- O(n) type check complexity.
86+insert ::
87+ forall label value lts res.
88+ ( KnownNat (1 + R.RecSize lts),
89+ KnownNat (R.RecSize lts),
90+ KnownSymbol label,
91+ R.RecCopy lts lts res,
92+ res ~ ((label := value) : lts),
93+ R.RemoveAccessTo label lts ~ lts
94+ ) =>
95+ label := value ->
96+ Tup lts ->
97+ Tup res
98+insert = R.combine . Tup
99+
100+-- | Insert a field into a record. Set it if it already exists
101+--
102+-- O(n) type check complexity.
103+insertOrSet ::
104+ forall label value rhs res.
105+ ( KnownNat (R.RecSize rhs),
106+ KnownNat (R.RecSize res),
107+ KnownNat (R.RecTyIdxH 0 label res),
108+ KnownSymbol label,
109+ value ~ R.RecTy label res,
110+ R.Reverse (R.Insert (label := value) (R.Reverse rhs)) ~ res,
111+ R.RecCopy rhs rhs res
112+ ) =>
113+ label := value ->
114+ Tup rhs ->
115+ Tup res
116+insertOrSet = R.insert
117+
118+----------------------------------------------------------------------------
119+-- Generic
120+----------------------------------------------------------------------------
121+
122+type Sel name value = S1 ('MetaSel ('Just name) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 value)
123+
124+type family Sels fields where
125+ Sels '[] = U1
126+ Sels '[name R.:= value] = Sel name value
127+ Sels ((name R.:= value) ': xs) = Sel name value :*: Sels xs
128+
129+type RecordRep fields =
130+ D1
131+ ('MetaData "Record" "Rec" "" 'False)
132+ ( C1
133+ ('MetaCons "Record" 'PrefixI 'True)
134+ (Sels fields)
135+ )
136+
137+-- instance (R.FromNative (RecordRep fields) fields, R.ToNative (RecordRep fields) fields) => Generic (Tup fields) where
138+-- type Rep (Tup fields) = RecordRep fields
139+-- from = R.toNative'
140+-- to = R.fromNative'
141+
142+pattern Tup ::
143+ ( RecTuple tuple fields
144+ ) =>
145+ tuple ->
146+ Tup fields
147+pattern Tup a <-
148+ (toTuple -> a)
149+ where
150+ Tup = fromTuple
src/JRec/Internal.hsnew file+786
@@ -0,0 +1,786 @@
1+-- Based on https://github.com/agrafix/superrecord. The original doesn't
2+-- export a lot of good things, and it was easier to just copy the
3+-- implementation since we don't need much out of it.
4+
5+module JRec.Internal where
6+
7+import Control.DeepSeq
8+import Data.Aeson
9+import Data.Aeson.Key (fromString, fromText)
10+import Data.Aeson.Types (Parser)
11+import Data.Constraint
12+import Data.Kind
13+import Data.List (intercalate)
14+import Data.Maybe (catMaybes)
15+import Data.Proxy
16+import qualified Data.Text as T
17+import Data.Typeable
18+import GHC.Base (Any, Int (..))
19+import GHC.Generics
20+import GHC.OverloadedLabels
21+import GHC.Prim
22+import GHC.Records
23+import GHC.ST (ST (..), runST)
24+import GHC.TypeLits
25+import Unsafe.Coerce
26+
27+-- | Field named @l@ labels value of type @t@ adapted from the awesome /labels/ package.
28+-- Example: @(#name := \"Chris\") :: (\"name\" := String)@
29+data label := value = (KnownSymbol label) => FldProxy label := !value
30+
31+deriving instance Typeable (:=)
32+
33+deriving instance Typeable (label := value)
34+
35+infix 6 :=
36+
37+instance (Eq value) => Eq (label := value) where
38+ (_ := x) == (_ := y) = x == y
39+ {-# INLINE (==) #-}
40+
41+instance (Ord value) => Ord (label := value) where
42+ compare (_ := x) (_ := y) = x `compare` y
43+ {-# INLINE compare #-}
44+
45+instance
46+ (Show t) =>
47+ Show (l := t)
48+ where
49+ showsPrec p (l := t) =
50+ showParen (p > 10) (showString ("#" ++ symbolVal l ++ " := " ++ show t))
51+
52+unpackAssign :: (label := value) -> value
53+unpackAssign (_ := value) = value
54+{-# INLINE unpackAssign #-}
55+
56+-- | A proxy witness for a label. Very similar to 'Proxy', but needed to implement
57+-- a non-orphan 'IsLabel' instance
58+data FldProxy (t :: Symbol)
59+ = FldProxy
60+ deriving (Show, Read, Eq, Ord, Typeable)
61+
62+instance (l ~ l') => IsLabel (l :: Symbol) (FldProxy l') where
63+ fromLabel = FldProxy
64+
65+data Tup (lts :: [Type]) = MkRec (SmallArray# Any) -- Note that the values are physically in reverse order
66+
67+data JSONOptions = JSONOptions
68+ {fieldTransform :: String -> String}
69+
70+defaultJSONOptions :: JSONOptions
71+defaultJSONOptions = JSONOptions {fieldTransform = id}
72+
73+type role Tup representational
74+
75+instance
76+ ( RecApply lts lts Show
77+ ) =>
78+ Show (Tup lts)
79+ where
80+ show rec = "{" ++ formatted ++ "}"
81+ where
82+ formatted = intercalate ", " $ map (\(k, v) -> k ++ " = " ++ v) $ showRec rec
83+
84+instance (RecEq lts lts) => Eq (Tup lts) where
85+ (==) (a :: Tup lts) (b :: Tup lts) = recEq a b (Proxy :: Proxy lts)
86+ {-# INLINE (==) #-}
87+
88+instance (RecOrd lts lts) => Ord (Tup lts) where
89+ compare (a :: Tup lts) (b :: Tup lts) = recOrd a b (Proxy :: Proxy lts)
90+ {-# INLINE compare #-}
91+
92+instance
93+ ( RecApply lts lts EncodeField
94+ ) =>
95+ ToJSON (Tup lts)
96+ where
97+ toJSON = recToValue defaultJSONOptions
98+ toEncoding = recToEncoding defaultJSONOptions
99+
100+instance (RecSize lts ~ s, KnownNat s, RecJsonParse lts) => FromJSON (Tup lts) where
101+ parseJSON = recJsonParser defaultJSONOptions
102+
103+instance (RecNfData lts lts) => NFData (Tup lts) where
104+ rnf = recNfData (Proxy :: Proxy lts)
105+
106+newtype ForallST a = ForallST {unForallST :: forall s. ST s a}
107+
108+-- Hack needed because $! doesn't have the same special treatment $ does to work with ST yet
109+runST' :: (forall s. ST s a) -> a
110+runST' !s = runST s
111+
112+-- | An empty record
113+rnil :: Tup '[]
114+rnil = create (unsafeRNil 0)
115+{-# INLINE rnil #-}
116+
117+create :: (forall s. ST s (Tup xs)) -> Tup xs
118+create = runST'
119+
120+unsafeRNil :: Int -> ST s (Tup '[])
121+unsafeRNil (I# n#) =
122+ ST $ \s# ->
123+ case newSmallArray# n# (error "No value") s# of
124+ (# s'#, arr# #) ->
125+ case unsafeFreezeSmallArray# arr# s'# of
126+ (# s''#, a# #) -> (# s''#, MkRec a# #)
127+{-# INLINE unsafeRNil #-}
128+
129+-- | Prepend a record entry to a record 'Rec'. Assumes that the record was created with
130+-- 'unsafeRNil' and still has enough free slots, mutates the original 'Rec' which should
131+-- not be reused after
132+--
133+-- NOTE: doesn't use 'KeyDoesNotExist' because we rely on the fact that in
134+-- euler-ps there were no duplicate keys
135+unsafeRCons ::
136+ forall l t lts size s.
137+ ( RecSize lts ~ size,
138+ KnownNat size
139+ -- KeyDoesNotExist l lts
140+ ) =>
141+ l := t ->
142+ Tup lts ->
143+ ST s (Tup (l := t ': lts))
144+unsafeRCons (_ := val) (MkRec vec#) =
145+ ST $ \s# ->
146+ case unsafeThawSmallArray# vec# s# of
147+ (# s'#, arr# #) ->
148+ -- Write the value to be cons'ed at the *end* (hence size#) of the
149+ -- array, because `Rec` stores values in reverse order.
150+ case writeSmallArray# arr# size# (unsafeCoerce# val) s'# of
151+ s''# ->
152+ case unsafeFreezeSmallArray# arr# s''# of
153+ (# s'''#, a# #) -> (# s'''#, MkRec a# #)
154+ where
155+ !(I# size#) = fromIntegral $ natVal' (proxy# :: Proxy# size)
156+{-# INLINE unsafeRCons #-}
157+
158+-- | Get the i-th value as Any unsafely.
159+-- No boundary check. Also ther caller is responsible for coerceing to correct type.
160+-- Intented for internal use only.
161+unsafeGet ::
162+ forall lts.
163+ Int ->
164+ Tup lts ->
165+ Any
166+unsafeGet (I# index#) (MkRec vec#) =
167+ let size# = sizeofSmallArray# vec#
168+ in case indexSmallArray# vec# (size# -# index# -# 1#) of
169+ (# a# #) -> a#
170+{-# INLINE unsafeGet #-}
171+
172+-- Not in superrecord
173+recCopy :: forall lts rts. (RecCopy lts lts rts) => Tup lts -> Tup rts
174+recCopy r@(MkRec vec#) =
175+ let size# = sizeofSmallArray# vec#
176+ in runST' $
177+ ST $
178+ \s# ->
179+ case newSmallArray# size# (error "No value") s# of
180+ (# s'#, arr# #) ->
181+ case recCopyInto (Proxy @lts) r (Proxy @rts) arr# s'# of
182+ s''# ->
183+ case unsafeFreezeSmallArray# arr# s''# of
184+ (# s'''#, a# #) -> (# s'''#, MkRec a# #)
185+{-# INLINE recCopy #-}
186+
187+class RecCopy (pts :: [Type]) (lts :: [Type]) (rts :: [Type]) where
188+ recCopyInto ::
189+ Proxy pts ->
190+ Tup lts ->
191+ Proxy rts ->
192+ SmallMutableArray# s Any ->
193+ State# s ->
194+ State# s
195+
196+instance RecCopy '[] lts rts where
197+ recCopyInto _ _ _ _ s# = s#
198+
199+instance
200+ ( Has l rts t,
201+ Has l lts t,
202+ nts ~ RemoveAccessTo l (l := t ': pts),
203+ RecCopy nts lts rts
204+ ) =>
205+ RecCopy (l := t ': pts) lts rts
206+ where
207+ recCopyInto _ lts prxy tgt# s# =
208+ let val = get @l lts
209+ !(I# index#) =
210+ fromIntegral (natVal' (proxy# :: Proxy# (RecTyIdxH 0 l rts)))
211+ size# = sizeofSmallMutableArray# tgt#
212+ in case writeSmallArray# tgt# (size# -# index# -# 1#) (unsafeCoerce# val) s# of
213+ s'# -> recCopyInto (Proxy :: Proxy nts) lts prxy tgt# s'#
214+
215+type family RecAll (c :: u -> Constraint) (rs :: [u]) :: Constraint where
216+ RecAll c '[] = ()
217+ RecAll c (r ': rs) = (c r, RecAll c rs)
218+
219+type family KeyDoesNotExist (l :: Symbol) (lts :: [Type]) :: Constraint where
220+ KeyDoesNotExist l '[] = 'True ~ 'True
221+ KeyDoesNotExist l (l := t ': lts) =
222+ TypeError
223+ ( 'Text "Duplicate key " ':<>: 'Text l
224+ )
225+ KeyDoesNotExist q (l := t ': lts) = KeyDoesNotExist q lts
226+
227+type family Reverse (xs :: [Type]) where
228+ Reverse '[] = '[]
229+ Reverse (x ': xs) = RecAppend (Reverse xs) '[x]
230+
231+type family Insert (a :: Type) (xs :: [Type]) where
232+ Insert x '[] = x ': '[]
233+ Insert (a := v) (a := _ ': xs) = a := v ': xs
234+ Insert a (x ': xs) = x ': Insert a xs
235+
236+type family Union xs ys where
237+ Union xs '[] = xs
238+ Union xs (y := t ': ys) = Union (Insert (y := t) xs) ys
239+
240+-- TODO: Rename to `Append`, because it just deals with general type list?
241+type family RecAppend lhs rhs where
242+ RecAppend '[] rhs = rhs
243+ RecAppend (x ': xs) rhs = x ': RecAppend xs rhs
244+
245+type family RecSize (lts :: [Type]) :: Nat where
246+ RecSize '[] = 0
247+ RecSize (l := t ': lts) = 1 + RecSize lts
248+
249+type family RecTyIdxH (i :: Nat) (l :: Symbol) (lts :: [Type]) :: Nat where
250+ RecTyIdxH idx l (l := t ': lts) = idx
251+ RecTyIdxH idx m (l := t ': lts) = RecTyIdxH (1 + idx) m lts
252+ RecTyIdxH idx m '[] =
253+ TypeError
254+ ( 'Text "Could not find label "
255+ ':<>: 'Text m
256+ )
257+
258+type family RecTy (l :: Symbol) (lts :: [Type]) :: k where
259+ RecTy l (l := t ': lts) = t
260+ RecTy q (l := t ': lts) = RecTy q lts
261+
262+-- | Require a record to contain at least the listed labels
263+type family HasOf (req :: [Type]) (lts :: [Type]) :: Constraint where
264+ HasOf (l := t ': req) lts = (Has l lts t, HasOf req lts)
265+ HasOf '[] lts = 'True ~ 'True
266+
267+-- | Require a record to contain a label
268+type Has l lts v =
269+ ( RecTy l lts ~ v,
270+ -- KnownNat (RecSize lts),
271+ KnownNat (RecTyIdxH 0 l lts)
272+ )
273+
274+-- | Get an existing record field
275+get ::
276+ forall l v lts.
277+ ( Has l lts v
278+ ) =>
279+ Tup lts ->
280+ v
281+get r =
282+ let !index = fromIntegral (natVal' (proxy# :: Proxy# (RecTyIdxH 0 l lts)))
283+ in unsafeCoerce $ unsafeGet index r
284+{-# INLINE get #-}
285+
286+type family Set l lts v where
287+ Set l '[] v = '[]
288+ Set l ((l := u) ': xs) v = (l := v) ': xs
289+ Set l (x ': xs) v = x ': Set l xs v
290+
291+-- | Update an existing record field
292+set ::
293+ forall l v lts v' lts'.
294+ (Has l lts v, Set l lts v' ~ lts') =>
295+ FldProxy l ->
296+ v' ->
297+ Tup lts ->
298+ Tup lts'
299+set _ !val (MkRec vec#) =
300+ let !(I# index#) = fromIntegral (natVal' (proxy# :: Proxy# (RecTyIdxH 0 l lts)))
301+ -- Unlike superrecord - calculating size dynamically instead of statically
302+ size# = sizeofSmallArray# vec#
303+ dynVal :: Any
304+ !dynVal = unsafeCoerce# val
305+ r2 =
306+ runST' $
307+ ST $
308+ \s# ->
309+ case newSmallArray# size# (error "No value") s# of
310+ (# s'#, arr# #) ->
311+ case copySmallArray# vec# 0# arr# 0# size# s'# of
312+ s''# ->
313+ case writeSmallArray# arr# (size# -# index# -# 1#) dynVal s''# of
314+ s'''# ->
315+ case unsafeFreezeSmallArray# arr# s'''# of
316+ (# s''''#, a# #) -> (# s''''#, MkRec a# #)
317+ in r2
318+{-# INLINE set #-}
319+
320+-- | Update an existing record field
321+modify ::
322+ forall l v lts v' lts'.
323+ (Has l lts v, Set l lts v' ~ lts') =>
324+ FldProxy l ->
325+ (v -> v') ->
326+ Tup lts ->
327+ Tup lts'
328+modify lbl fun r = set lbl (fun $ get @l r) r
329+{-# INLINE modify #-}
330+
331+-- | Constructor for field accessor paths
332+data lbl :& more = FldProxy lbl :& more
333+
334+infixr 8 :&
335+
336+-- | Constructor for field accessor paths
337+(&:) :: FldProxy q -> more -> q :& more
338+(&:) = (:&)
339+{-# INLINE (&:) #-}
340+
341+infixr 8 &:
342+
343+-- | Specialized version of (&:) to help writing the last piece of the path w/o
344+-- confusing the type checker
345+(&:-) :: FldProxy q -> FldProxy r -> q :& FldProxy r
346+(&:-) = (:&)
347+{-# INLINE (&:-) #-}
348+
349+infixr 8 &:-
350+
351+-- | Helper function to allow to clearing specify unknown 'IsLabel' cases
352+fld :: FldProxy l -> FldProxy l
353+fld = id
354+
355+type family RecDeepTy (ps :: r) (lts :: [Type]) :: Type where
356+ RecDeepTy (l :& more) (l := Tup t ': lts) = RecDeepTy more t
357+ RecDeepTy (l :& more) (l := t ': lts) = t
358+ RecDeepTy (l :& more) (q := t ': lts) = RecDeepTy (l :& more) lts
359+ RecDeepTy (FldProxy l) '[l := t] = t
360+ RecDeepTy l '[l := t] = t
361+
362+-- | Combine two records
363+--
364+-- NOTE: changed from original superrecord to not require a 'Sort'
365+combine ::
366+ forall lhs rhs res.
367+ (res ~ RecAppend lhs rhs) =>
368+ Tup lhs ->
369+ Tup rhs ->
370+ Tup res
371+combine (MkRec arr0#) (MkRec arr1#) =
372+ let !size0# = sizeofSmallArray# arr0#
373+ !size1# = sizeofSmallArray# arr1#
374+ in runST' $
375+ ST $
376+ \s# ->
377+ case newSmallArray# (size0# +# size1#) (error "No value") s# of
378+ (# s'#, arr# #) ->
379+ case copySmallArray# arr1# 0# arr# 0# size1# s'# of
380+ s''# ->
381+ case copySmallArray# arr0# 0# arr# size1# size0# s''# of
382+ s'''# ->
383+ case unsafeFreezeSmallArray# arr# s'''# of
384+ (# s''''#, a# #) -> (# s''''#, MkRec a# #)
385+{-# INLINE combine #-}
386+
387+-- | Union two records (left-biased)
388+union ::
389+ forall lhs rhs res.
390+ ( KnownNat (RecSize lhs),
391+ KnownNat (RecSize rhs),
392+ KnownNat (RecSize res),
393+ res ~ Union lhs rhs,
394+ RecCopy lhs lhs res,
395+ RecCopy rhs rhs res
396+ ) =>
397+ Tup lhs ->
398+ Tup rhs ->
399+ Tup res
400+union lts rts =
401+ let !(I# size#) =
402+ fromIntegral $ natVal' (proxy# :: Proxy# (RecSize (Union lhs rhs)))
403+ in runST' $
404+ ST $
405+ \s# ->
406+ case newSmallArray# size# (error "No value") s# of
407+ (# s'#, arr# #) ->
408+ -- Copy rhs first, so that lhs can override later so as to retain
409+ -- the left-biased semantics of union.
410+ case recCopyInto (Proxy :: Proxy rhs) rts (Proxy :: Proxy res) arr# s'# of
411+ s''# ->
412+ case recCopyInto (Proxy :: Proxy lhs) lts (Proxy :: Proxy res) arr# s''# of
413+ s'''# ->
414+ case unsafeFreezeSmallArray# arr# s'''# of
415+ (# s''''#, a# #) -> (# s''''#, MkRec a# #)
416+{-# INLINE union #-}
417+
418+-- | Insert a field
419+--
420+-- Insert at beginning, unless the field already exists, in which case set it
421+-- directly.
422+insert ::
423+ forall l v rhs res.
424+ ( KnownNat (RecSize rhs),
425+ KnownNat (RecSize res),
426+ res ~ Reverse (Insert (l := v) (Reverse rhs)),
427+ RecCopy '[l := v] '[l := v] res,
428+ RecCopy rhs rhs res
429+ ) =>
430+ l := v ->
431+ Tup rhs ->
432+ Tup res
433+insert (l := v) rts =
434+ let !(I# size#) =
435+ fromIntegral $ natVal' (proxy# :: Proxy# (RecSize res))
436+ in runST' $ do
437+ single <- unsafeRCons (l := v) =<< unsafeRNil 1
438+ ST $ \s# ->
439+ case newSmallArray# size# (error "No value") s# of
440+ (# s'#, arr# #) ->
441+ case recCopyInto (Proxy :: Proxy rhs) rts (Proxy :: Proxy res) arr# s'# of
442+ s''# ->
443+ case recCopyInto (Proxy :: Proxy '[l := v]) single (Proxy :: Proxy res) arr# s''# of
444+ s'''# ->
445+ case unsafeFreezeSmallArray# arr# s'''# of
446+ (# s''''#, a# #) -> (# s''''#, MkRec a# #)
447+{-# INLINE insert #-}
448+
449+-- | Alias for 'combine'
450+(++:) ::
451+ forall lhs rhs res.
452+ (res ~ RecAppend lhs rhs) =>
453+ Tup lhs ->
454+ Tup rhs ->
455+ Tup res
456+(++:) = combine
457+{-# INLINE (++:) #-}
458+
459+data RecFields (flds :: [Symbol]) where
460+ RFNil :: RecFields '[]
461+ RFCons :: (KnownSymbol f) => FldProxy f -> RecFields xs -> RecFields (f ': xs)
462+
463+recKeys :: forall t (lts :: [Type]). (RecKeys lts) => t lts -> [String]
464+recKeys = recKeys' . recFields
465+
466+recKeys' :: RecFields lts -> [String]
467+recKeys' x =
468+ case x of
469+ RFNil -> []
470+ RFCons q qs -> symbolVal q : recKeys' qs
471+
472+-- | Get keys of a record on value and type level
473+class RecKeys (lts :: [Type]) where
474+ type RecKeysT lts :: [Symbol]
475+ recFields :: t lts -> RecFields (RecKeysT lts)
476+
477+instance RecKeys '[] where
478+ type RecKeysT '[] = '[]
479+ recFields _ = RFNil
480+
481+instance (KnownSymbol l, RecKeys lts) => RecKeys (l := t ': lts) where
482+ type RecKeysT (l := t ': lts) = (l ': RecKeysT lts)
483+ recFields (_ :: f (l := t ': lts)) =
484+ let lbl :: FldProxy l
485+ lbl = FldProxy
486+ more :: Proxy lts
487+ more = Proxy
488+ in (lbl `RFCons` recFields more)
489+
490+-- | Apply a function to each key element pair for a record
491+reflectRec ::
492+ forall c r lts.
493+ (RecApply lts lts c) =>
494+ Proxy c ->
495+ (forall a. (c a) => String -> a -> r) ->
496+ Tup lts ->
497+ [r]
498+reflectRec _ f r =
499+ reverse $
500+ recApply (\(Dict :: Dict (c a)) s v xs -> (f s v : xs)) r (Proxy :: Proxy lts) []
501+{-# INLINE reflectRec #-}
502+
503+-- | Fold over all elements of a record
504+reflectRecFold ::
505+ forall c r lts.
506+ (RecApply lts lts c) =>
507+ Proxy c ->
508+ (forall a. (c a) => String -> a -> r -> r) ->
509+ Tup lts ->
510+ r ->
511+ r
512+reflectRecFold _ f r =
513+ recApply (\(Dict :: Dict (c a)) s v x -> f s v x) r (Proxy :: Proxy lts)
514+{-# INLINE reflectRecFold #-}
515+
516+-- | Convert all elements of a record to a 'String'
517+showRec :: forall lts. (RecApply lts lts Show) => Tup lts -> [(String, String)]
518+showRec = reflectRec @Show Proxy (\k v -> (k, show v))
519+
520+class (ToJSON a) => EncodeField a where
521+ encodeField :: a -> Maybe Value
522+ encodeKV :: T.Text -> a -> Series
523+
524+instance (ToJSON a) => EncodeField a where
525+ encodeField = pure . toJSON
526+ encodeKV k v = fromText k .= v
527+
528+instance {-# OVERLAPS #-} (ToJSON a) => EncodeField (Maybe a) where
529+ encodeField = fmap toJSON
530+ encodeKV _ Nothing = mempty
531+ encodeKV k v = fromText k .= v
532+
533+recToValue :: forall lts. (RecApply lts lts EncodeField) => JSONOptions -> Tup lts -> Value
534+recToValue options r =
535+ object $ catMaybes $ reflectRec @EncodeField Proxy (\k v -> (fromString (options.fieldTransform k),) <$> encodeField v) r
536+
537+recToEncoding :: forall lts. (RecApply lts lts EncodeField) => JSONOptions -> Tup lts -> Encoding
538+recToEncoding options r =
539+ pairs $ mconcat $ reflectRec @EncodeField Proxy (\k v -> (T.pack (options.fieldTransform k) `encodeKV` v)) r
540+
541+recJsonParser ::
542+ forall lts s.
543+ (RecSize lts ~ s, KnownNat s, RecJsonParse lts) =>
544+ (JSONOptions -> Value -> Parser (Tup lts))
545+recJsonParser options =
546+ withObject "Record" $ \o ->
547+ (\(ForallST act) -> create act) <$> recJsonParse options initSize o
548+ where
549+ initSize = fromIntegral $ natVal' (proxy# :: Proxy# s)
550+
551+-- | Machinery needed to implement 'reflectRec'
552+class RecApply (rts :: [Type]) (lts :: [Type]) c where
553+ recApply :: (forall a. Dict (c a) -> String -> a -> b -> b) -> Tup rts -> Proxy lts -> b -> b
554+
555+instance RecApply rts '[] c where
556+ recApply _ _ _ b = b
557+
558+instance
559+ ( KnownSymbol l,
560+ RecApply rts (RemoveAccessTo l lts) c,
561+ Has l rts v,
562+ c v
563+ ) =>
564+ RecApply rts (l := t ': lts) c
565+ where
566+ recApply f r (_ :: Proxy (l := t ': lts)) b =
567+ let lbl :: FldProxy l
568+ lbl = FldProxy
569+ val = get @l r
570+ res = f Dict (symbolVal lbl) val b
571+ pNext :: Proxy (RemoveAccessTo l (l := t ': lts))
572+ pNext = Proxy
573+ in recApply f r pNext res
574+
575+-- | Machinery to implement equality
576+class RecEq (rts :: [Type]) (lts :: [Type]) where
577+ recEq :: Tup rts -> Tup rts -> Proxy lts -> Bool
578+
579+instance RecEq rts '[] where
580+ recEq _ _ _ = True
581+
582+instance
583+ ( RecEq rts (RemoveAccessTo l lts),
584+ Has l rts v,
585+ Eq v
586+ ) =>
587+ RecEq rts (l := t ': lts)
588+ where
589+ recEq r1 r2 (_ :: Proxy (l := t ': lts)) =
590+ let lbl :: FldProxy l
591+ lbl = FldProxy
592+ val = get @l r1
593+ val2 = get @l r2
594+ res = val == val2
595+ pNext :: Proxy (RemoveAccessTo l (l := t ': lts))
596+ pNext = Proxy
597+ in res && recEq r1 r2 pNext
598+
599+-- | Machinery to implement order
600+class (RecEq rts lts) => RecOrd (rts :: [Type]) (lts :: [Type]) where
601+ recOrd :: Tup rts -> Tup rts -> Proxy lts -> Ordering
602+
603+instance RecOrd rts '[] where
604+ recOrd _ _ _ = EQ
605+
606+instance
607+ ( RecOrd rts (RemoveAccessTo l lts),
608+ Has l rts v,
609+ Ord v
610+ ) =>
611+ RecOrd rts (l := t ': lts)
612+ where
613+ recOrd r1 r2 (_ :: Proxy (l := t ': lts)) =
614+ let lbl :: FldProxy l
615+ lbl = FldProxy
616+ val1 = get @l r1
617+ val2 = get @l r2
618+ ord = compare val1 val2
619+ pNext :: Proxy (RemoveAccessTo l (l := t ': lts))
620+ pNext = Proxy
621+ in if ord == EQ then recOrd r1 r2 pNext else ord
622+
623+-- TODO: this probably slows typechecking in euler-ps, and should not be needed
624+type family RemoveAccessTo (l :: Symbol) (lts :: [Type]) :: [Type] where
625+ RemoveAccessTo l (l := t ': lts) = RemoveAccessTo l lts
626+ RemoveAccessTo q (l := t ': lts) = (l := t ': RemoveAccessTo q lts)
627+ RemoveAccessTo q '[] = '[]
628+
629+-- | Machinery to implement parseJSON
630+class RecJsonParse (lts :: [Type]) where
631+ recJsonParse :: JSONOptions -> Int -> Object -> Parser (ForallST (Tup lts))
632+
633+instance RecJsonParse '[] where
634+ recJsonParse _ initSize _ = pure (ForallST (unsafeRNil initSize))
635+
636+class (FromJSON a) => ParseField a where
637+ parseField :: Object -> T.Text -> Parser a
638+
639+instance (FromJSON a) => ParseField a where
640+ parseField o k = o .: fromText k
641+
642+instance {-# OVERLAPS #-} (FromJSON a) => ParseField (Maybe a) where
643+ parseField o k = o .:? fromText k
644+
645+instance
646+ ( KnownSymbol l,
647+ FromJSON t,
648+ ParseField t,
649+ RecJsonParse lts,
650+ RecSize lts ~ s,
651+ KnownNat s,
652+ KeyDoesNotExist l lts
653+ ) =>
654+ RecJsonParse (l := t ': lts)
655+ where
656+ recJsonParse options initSize obj = do
657+ let lbl :: FldProxy l
658+ lbl = FldProxy
659+ (ForallST rest) <- recJsonParse options initSize obj
660+ (v :: t) <- obj `parseField` T.pack (options.fieldTransform (symbolVal lbl))
661+ pure $ ForallST (unsafeRCons (lbl := v) =<< rest)
662+
663+-- | Machinery for NFData
664+class RecNfData (lts :: [Type]) (rts :: [Type]) where
665+ recNfData :: Proxy lts -> Tup rts -> ()
666+
667+instance RecNfData '[] rts where
668+ recNfData _ _ = ()
669+
670+instance
671+ ( Has l rts v,
672+ NFData v,
673+ RecNfData (RemoveAccessTo l lts) rts
674+ ) =>
675+ RecNfData (l := t ': lts) rts
676+ where
677+ recNfData (_ :: (Proxy (l := t ': lts))) r =
678+ let !v = get @l r
679+ pNext :: Proxy (RemoveAccessTo l (l := t ': lts))
680+ pNext = Proxy
681+ in deepseq v (recNfData pNext r)
682+
683+-- | Conversion helper to bring a Haskell type to a record. Note that the
684+-- native Haskell type must be an instance of 'Generic'
685+class FromNative a lts | a -> lts where
686+ fromNative' :: a x -> Tup lts
687+
688+instance (FromNative cs lts) => FromNative (D1 m cs) lts where
689+ fromNative' (M1 xs) = fromNative' xs
690+
691+instance (FromNative cs lts) => FromNative (C1 m cs) lts where
692+ fromNative' (M1 xs) = fromNative' xs
693+
694+instance FromNative U1 '[] where
695+ fromNative' U1 = rnil
696+
697+instance
698+ ( KnownSymbol name
699+ ) =>
700+ FromNative (S1 ('MetaSel ('Just name) p s l) (Rec0 t)) '[name := t]
701+ where
702+ fromNative' (M1 (K1 t)) =
703+ create $
704+ unsafeRCons ((FldProxy :: FldProxy name) := t)
705+ =<< unsafeRNil 1
706+
707+instance
708+ ( FromNative l lhs,
709+ FromNative r rhs,
710+ lts ~ RecAppend lhs rhs,
711+ RecCopy lhs lhs lts,
712+ RecCopy rhs rhs lts,
713+ KnownNat (RecSize lhs),
714+ KnownNat (RecSize rhs),
715+ KnownNat (RecSize lhs + RecSize rhs)
716+ ) =>
717+ FromNative (l :*: r) lts
718+ where
719+ fromNative' (l :*: r) = fromNative' l ++: fromNative' r
720+
721+-- | Convert a native Haskell type to a record
722+fromNative :: (Generic a, FromNative (Rep a) lts) => a -> Tup lts
723+fromNative = fromNative' . from
724+{-# INLINE fromNative #-}
725+
726+-- | Conversion helper to bring a record back into a Haskell type. Note that the
727+-- native Haskell type must be an instance of 'Generic'
728+class ToNative a lts where
729+ toNative' :: Tup lts -> a x
730+
731+instance (ToNative cs lts) => ToNative (D1 m cs) lts where
732+ toNative' xs = M1 $ toNative' xs
733+
734+instance (ToNative cs lts) => ToNative (C1 m cs) lts where
735+ toNative' xs = M1 $ toNative' xs
736+
737+instance ToNative U1 '[] where
738+ toNative' r = U1
739+
740+instance
741+ (Has name lts t) =>
742+ ToNative (S1 ('MetaSel ('Just name) p s l) (Rec0 t)) lts
743+ where
744+ toNative' r =
745+ M1 $ K1 (get @name r)
746+
747+instance
748+ ( ToNative l lts,
749+ ToNative r lts
750+ ) =>
751+ ToNative (l :*: r) lts
752+ where
753+ toNative' r = toNative' r :*: toNative' r
754+
755+-- | Convert a record to a native Haskell type
756+toNative :: (Generic a, ToNative (Rep a) lts) => Tup lts -> a
757+toNative = to . toNative'
758+{-# INLINE toNative #-}
759+
760+type Lens s t a b = forall f. (Functor f) => (a -> f b) -> (s -> f t)
761+
762+-- | Convert a field label to a lens
763+lens ::
764+ forall l v v' lts lts'.
765+ (Has l lts v, Set l lts v' ~ lts') =>
766+ FldProxy l ->
767+ Lens (Tup lts) (Tup lts') v v'
768+lens lbl f r =
769+ fmap (\v -> set lbl v r) (f (get @l r))
770+{-# INLINE lens #-}
771+
772+class NoConstraint x
773+
774+instance NoConstraint x
775+
776+-- | Convert a record into a list of fields.
777+--
778+-- | Not present in original superrecord
779+getFields :: (RecApply fields fields NoConstraint) => Tup fields -> [Any]
780+getFields =
781+ reflectRec @NoConstraint
782+ Proxy
783+ (\_ val -> unsafeCoerce (FldProxy @"" := val))
784+
785+instance (Has field fields a) => HasField field (Tup fields) a where
786+ getField = get @field
src/JRec/Tuple.hsnew file+262
@@ -0,0 +1,262 @@
1+-- Generated with cabal run -v0 bin/genrecord > src/JRec/Tuple.hs
2+
3+module JRec.Tuple where
4+
5+import qualified JRec.Internal as R
6+import Unsafe.Coerce
7+
8+class RecTuple tuple fields | tuple -> fields, fields -> tuple where
9+ fromTuple :: tuple -> R.Tup fields
10+ toTuple :: R.Tup fields -> tuple
11+
12+instance RecTuple () '[] where
13+ fromTuple _ = R.rnil
14+ toTuple _ = ()
15+
16+instance (n1 ~ n1', v1 ~ v1') => RecTuple (n1 R.:= v1) '[n1' R.:= v1'] where
17+ fromTuple (f1) = R.create $ R.unsafeRCons f1 =<< R.unsafeRNil 1
18+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r)
19+
20+instance (n1 ~ n1', n2 ~ n2', v1 ~ v1', v2 ~ v2') => RecTuple (n1 R.:= v1, n2 R.:= v2) '[n1' R.:= v1', n2' R.:= v2'] where
21+ fromTuple (f1, f2) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRNil 2
22+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r)
23+
24+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', v1 ~ v1', v2 ~ v2', v3 ~ v3') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3'] where
25+ fromTuple (f1, f2, f3) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRNil 3
26+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r)
27+
28+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4'] where
29+ fromTuple (f1, f2, f3, f4) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRNil 4
30+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r)
31+
32+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5'] where
33+ fromTuple (f1, f2, f3, f4, f5) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRNil 5
34+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r)
35+
36+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6'] where
37+ fromTuple (f1, f2, f3, f4, f5, f6) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRNil 6
38+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r)
39+
40+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7'] where
41+ fromTuple (f1, f2, f3, f4, f5, f6, f7) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRNil 7
42+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r)
43+
44+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8'] where
45+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRNil 8
46+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r)
47+
48+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9'] where
49+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRNil 9
50+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r)
51+
52+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10'] where
53+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRNil 10
54+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r)
55+
56+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11'] where
57+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRNil 11
58+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r)
59+
60+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12'] where
61+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRNil 12
62+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r)
63+
64+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13'] where
65+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRNil 13
66+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r)
67+
68+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14'] where
69+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRNil 14
70+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r)
71+
72+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15'] where
73+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRNil 15
74+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r)
75+
76+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16'] where
77+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRNil 16
78+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r)
79+
80+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17'] where
81+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRNil 17
82+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r)
83+
84+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18'] where
85+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRNil 18
86+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r)
87+
88+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19'] where
89+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRNil 19
90+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r)
91+
92+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20'] where
93+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRNil 20
94+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r)
95+
96+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21'] where
97+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRNil 21
98+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r)
99+
100+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22'] where
101+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRNil 22
102+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r)
103+
104+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23'] where
105+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRNil 23
106+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r)
107+
108+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24'] where
109+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRNil 24
110+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r)
111+
112+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25'] where
113+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRNil 25
114+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r)
115+
116+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26'] where
117+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRNil 26
118+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r)
119+
120+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27'] where
121+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRNil 27
122+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r)
123+
124+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28'] where
125+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRNil 28
126+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r)
127+
128+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29'] where
129+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRNil 29
130+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r)
131+
132+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30'] where
133+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRNil 30
134+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r)
135+
136+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31'] where
137+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRNil 31
138+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r)
139+
140+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32'] where
141+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRNil 32
142+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r)
143+
144+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33'] where
145+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRNil 33
146+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r)
147+
148+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34'] where
149+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRNil 34
150+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r)
151+
152+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35'] where
153+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRNil 35
154+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r)
155+
156+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36'] where
157+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRNil 36
158+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r)
159+
160+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37'] where
161+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRNil 37
162+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r)
163+
164+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38'] where
165+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRNil 38
166+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r)
167+
168+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39'] where
169+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRNil 39
170+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r)
171+
172+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40'] where
173+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRNil 40
174+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r)
175+
176+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', n41 ~ n41', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40', v41 ~ v41') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40, n41 R.:= v41) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40', n41' R.:= v41'] where
177+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRCons f41 =<< R.unsafeRNil 41
178+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r, n R.:= R.unsafeGet 40 r)
179+
180+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', n41 ~ n41', n42 ~ n42', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40', v41 ~ v41', v42 ~ v42') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40, n41 R.:= v41, n42 R.:= v42) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40', n41' R.:= v41', n42' R.:= v42'] where
181+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRCons f41 =<< R.unsafeRCons f42 =<< R.unsafeRNil 42
182+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r, n R.:= R.unsafeGet 40 r, n R.:= R.unsafeGet 41 r)
183+
184+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', n41 ~ n41', n42 ~ n42', n43 ~ n43', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40', v41 ~ v41', v42 ~ v42', v43 ~ v43') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40, n41 R.:= v41, n42 R.:= v42, n43 R.:= v43) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40', n41' R.:= v41', n42' R.:= v42', n43' R.:= v43'] where
185+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRCons f41 =<< R.unsafeRCons f42 =<< R.unsafeRCons f43 =<< R.unsafeRNil 43
186+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r, n R.:= R.unsafeGet 40 r, n R.:= R.unsafeGet 41 r, n R.:= R.unsafeGet 42 r)
187+
188+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', n41 ~ n41', n42 ~ n42', n43 ~ n43', n44 ~ n44', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40', v41 ~ v41', v42 ~ v42', v43 ~ v43', v44 ~ v44') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40, n41 R.:= v41, n42 R.:= v42, n43 R.:= v43, n44 R.:= v44) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40', n41' R.:= v41', n42' R.:= v42', n43' R.:= v43', n44' R.:= v44'] where
189+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRCons f41 =<< R.unsafeRCons f42 =<< R.unsafeRCons f43 =<< R.unsafeRCons f44 =<< R.unsafeRNil 44
190+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r, n R.:= R.unsafeGet 40 r, n R.:= R.unsafeGet 41 r, n R.:= R.unsafeGet 42 r, n R.:= R.unsafeGet 43 r)
191+
192+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', n41 ~ n41', n42 ~ n42', n43 ~ n43', n44 ~ n44', n45 ~ n45', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40', v41 ~ v41', v42 ~ v42', v43 ~ v43', v44 ~ v44', v45 ~ v45') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40, n41 R.:= v41, n42 R.:= v42, n43 R.:= v43, n44 R.:= v44, n45 R.:= v45) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40', n41' R.:= v41', n42' R.:= v42', n43' R.:= v43', n44' R.:= v44', n45' R.:= v45'] where
193+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRCons f41 =<< R.unsafeRCons f42 =<< R.unsafeRCons f43 =<< R.unsafeRCons f44 =<< R.unsafeRCons f45 =<< R.unsafeRNil 45
194+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r, n R.:= R.unsafeGet 40 r, n R.:= R.unsafeGet 41 r, n R.:= R.unsafeGet 42 r, n R.:= R.unsafeGet 43 r, n R.:= R.unsafeGet 44 r)
195+
196+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', n41 ~ n41', n42 ~ n42', n43 ~ n43', n44 ~ n44', n45 ~ n45', n46 ~ n46', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40', v41 ~ v41', v42 ~ v42', v43 ~ v43', v44 ~ v44', v45 ~ v45', v46 ~ v46') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40, n41 R.:= v41, n42 R.:= v42, n43 R.:= v43, n44 R.:= v44, n45 R.:= v45, n46 R.:= v46) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40', n41' R.:= v41', n42' R.:= v42', n43' R.:= v43', n44' R.:= v44', n45' R.:= v45', n46' R.:= v46'] where
197+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRCons f41 =<< R.unsafeRCons f42 =<< R.unsafeRCons f43 =<< R.unsafeRCons f44 =<< R.unsafeRCons f45 =<< R.unsafeRCons f46 =<< R.unsafeRNil 46
198+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r, n R.:= R.unsafeGet 40 r, n R.:= R.unsafeGet 41 r, n R.:= R.unsafeGet 42 r, n R.:= R.unsafeGet 43 r, n R.:= R.unsafeGet 44 r, n R.:= R.unsafeGet 45 r)
199+
200+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', n41 ~ n41', n42 ~ n42', n43 ~ n43', n44 ~ n44', n45 ~ n45', n46 ~ n46', n47 ~ n47', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40', v41 ~ v41', v42 ~ v42', v43 ~ v43', v44 ~ v44', v45 ~ v45', v46 ~ v46', v47 ~ v47') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40, n41 R.:= v41, n42 R.:= v42, n43 R.:= v43, n44 R.:= v44, n45 R.:= v45, n46 R.:= v46, n47 R.:= v47) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40', n41' R.:= v41', n42' R.:= v42', n43' R.:= v43', n44' R.:= v44', n45' R.:= v45', n46' R.:= v46', n47' R.:= v47'] where
201+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRCons f41 =<< R.unsafeRCons f42 =<< R.unsafeRCons f43 =<< R.unsafeRCons f44 =<< R.unsafeRCons f45 =<< R.unsafeRCons f46 =<< R.unsafeRCons f47 =<< R.unsafeRNil 47
202+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r, n R.:= R.unsafeGet 40 r, n R.:= R.unsafeGet 41 r, n R.:= R.unsafeGet 42 r, n R.:= R.unsafeGet 43 r, n R.:= R.unsafeGet 44 r, n R.:= R.unsafeGet 45 r, n R.:= R.unsafeGet 46 r)
203+
204+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', n41 ~ n41', n42 ~ n42', n43 ~ n43', n44 ~ n44', n45 ~ n45', n46 ~ n46', n47 ~ n47', n48 ~ n48', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40', v41 ~ v41', v42 ~ v42', v43 ~ v43', v44 ~ v44', v45 ~ v45', v46 ~ v46', v47 ~ v47', v48 ~ v48') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40, n41 R.:= v41, n42 R.:= v42, n43 R.:= v43, n44 R.:= v44, n45 R.:= v45, n46 R.:= v46, n47 R.:= v47, n48 R.:= v48) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40', n41' R.:= v41', n42' R.:= v42', n43' R.:= v43', n44' R.:= v44', n45' R.:= v45', n46' R.:= v46', n47' R.:= v47', n48' R.:= v48'] where
205+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRCons f41 =<< R.unsafeRCons f42 =<< R.unsafeRCons f43 =<< R.unsafeRCons f44 =<< R.unsafeRCons f45 =<< R.unsafeRCons f46 =<< R.unsafeRCons f47 =<< R.unsafeRCons f48 =<< R.unsafeRNil 48
206+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r, n R.:= R.unsafeGet 40 r, n R.:= R.unsafeGet 41 r, n R.:= R.unsafeGet 42 r, n R.:= R.unsafeGet 43 r, n R.:= R.unsafeGet 44 r, n R.:= R.unsafeGet 45 r, n R.:= R.unsafeGet 46 r, n R.:= R.unsafeGet 47 r)
207+
208+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', n41 ~ n41', n42 ~ n42', n43 ~ n43', n44 ~ n44', n45 ~ n45', n46 ~ n46', n47 ~ n47', n48 ~ n48', n49 ~ n49', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40', v41 ~ v41', v42 ~ v42', v43 ~ v43', v44 ~ v44', v45 ~ v45', v46 ~ v46', v47 ~ v47', v48 ~ v48', v49 ~ v49') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40, n41 R.:= v41, n42 R.:= v42, n43 R.:= v43, n44 R.:= v44, n45 R.:= v45, n46 R.:= v46, n47 R.:= v47, n48 R.:= v48, n49 R.:= v49) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40', n41' R.:= v41', n42' R.:= v42', n43' R.:= v43', n44' R.:= v44', n45' R.:= v45', n46' R.:= v46', n47' R.:= v47', n48' R.:= v48', n49' R.:= v49'] where
209+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRCons f41 =<< R.unsafeRCons f42 =<< R.unsafeRCons f43 =<< R.unsafeRCons f44 =<< R.unsafeRCons f45 =<< R.unsafeRCons f46 =<< R.unsafeRCons f47 =<< R.unsafeRCons f48 =<< R.unsafeRCons f49 =<< R.unsafeRNil 49
210+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r, n R.:= R.unsafeGet 40 r, n R.:= R.unsafeGet 41 r, n R.:= R.unsafeGet 42 r, n R.:= R.unsafeGet 43 r, n R.:= R.unsafeGet 44 r, n R.:= R.unsafeGet 45 r, n R.:= R.unsafeGet 46 r, n R.:= R.unsafeGet 47 r, n R.:= R.unsafeGet 48 r)
211+
212+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', n41 ~ n41', n42 ~ n42', n43 ~ n43', n44 ~ n44', n45 ~ n45', n46 ~ n46', n47 ~ n47', n48 ~ n48', n49 ~ n49', n50 ~ n50', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40', v41 ~ v41', v42 ~ v42', v43 ~ v43', v44 ~ v44', v45 ~ v45', v46 ~ v46', v47 ~ v47', v48 ~ v48', v49 ~ v49', v50 ~ v50') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40, n41 R.:= v41, n42 R.:= v42, n43 R.:= v43, n44 R.:= v44, n45 R.:= v45, n46 R.:= v46, n47 R.:= v47, n48 R.:= v48, n49 R.:= v49, n50 R.:= v50) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40', n41' R.:= v41', n42' R.:= v42', n43' R.:= v43', n44' R.:= v44', n45' R.:= v45', n46' R.:= v46', n47' R.:= v47', n48' R.:= v48', n49' R.:= v49', n50' R.:= v50'] where
213+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRCons f41 =<< R.unsafeRCons f42 =<< R.unsafeRCons f43 =<< R.unsafeRCons f44 =<< R.unsafeRCons f45 =<< R.unsafeRCons f46 =<< R.unsafeRCons f47 =<< R.unsafeRCons f48 =<< R.unsafeRCons f49 =<< R.unsafeRCons f50 =<< R.unsafeRNil 50
214+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r, n R.:= R.unsafeGet 40 r, n R.:= R.unsafeGet 41 r, n R.:= R.unsafeGet 42 r, n R.:= R.unsafeGet 43 r, n R.:= R.unsafeGet 44 r, n R.:= R.unsafeGet 45 r, n R.:= R.unsafeGet 46 r, n R.:= R.unsafeGet 47 r, n R.:= R.unsafeGet 48 r, n R.:= R.unsafeGet 49 r)
215+
216+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', n41 ~ n41', n42 ~ n42', n43 ~ n43', n44 ~ n44', n45 ~ n45', n46 ~ n46', n47 ~ n47', n48 ~ n48', n49 ~ n49', n50 ~ n50', n51 ~ n51', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40', v41 ~ v41', v42 ~ v42', v43 ~ v43', v44 ~ v44', v45 ~ v45', v46 ~ v46', v47 ~ v47', v48 ~ v48', v49 ~ v49', v50 ~ v50', v51 ~ v51') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40, n41 R.:= v41, n42 R.:= v42, n43 R.:= v43, n44 R.:= v44, n45 R.:= v45, n46 R.:= v46, n47 R.:= v47, n48 R.:= v48, n49 R.:= v49, n50 R.:= v50, n51 R.:= v51) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40', n41' R.:= v41', n42' R.:= v42', n43' R.:= v43', n44' R.:= v44', n45' R.:= v45', n46' R.:= v46', n47' R.:= v47', n48' R.:= v48', n49' R.:= v49', n50' R.:= v50', n51' R.:= v51'] where
217+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRCons f41 =<< R.unsafeRCons f42 =<< R.unsafeRCons f43 =<< R.unsafeRCons f44 =<< R.unsafeRCons f45 =<< R.unsafeRCons f46 =<< R.unsafeRCons f47 =<< R.unsafeRCons f48 =<< R.unsafeRCons f49 =<< R.unsafeRCons f50 =<< R.unsafeRCons f51 =<< R.unsafeRNil 51
218+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r, n R.:= R.unsafeGet 40 r, n R.:= R.unsafeGet 41 r, n R.:= R.unsafeGet 42 r, n R.:= R.unsafeGet 43 r, n R.:= R.unsafeGet 44 r, n R.:= R.unsafeGet 45 r, n R.:= R.unsafeGet 46 r, n R.:= R.unsafeGet 47 r, n R.:= R.unsafeGet 48 r, n R.:= R.unsafeGet 49 r, n R.:= R.unsafeGet 50 r)
219+
220+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', n41 ~ n41', n42 ~ n42', n43 ~ n43', n44 ~ n44', n45 ~ n45', n46 ~ n46', n47 ~ n47', n48 ~ n48', n49 ~ n49', n50 ~ n50', n51 ~ n51', n52 ~ n52', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40', v41 ~ v41', v42 ~ v42', v43 ~ v43', v44 ~ v44', v45 ~ v45', v46 ~ v46', v47 ~ v47', v48 ~ v48', v49 ~ v49', v50 ~ v50', v51 ~ v51', v52 ~ v52') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40, n41 R.:= v41, n42 R.:= v42, n43 R.:= v43, n44 R.:= v44, n45 R.:= v45, n46 R.:= v46, n47 R.:= v47, n48 R.:= v48, n49 R.:= v49, n50 R.:= v50, n51 R.:= v51, n52 R.:= v52) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40', n41' R.:= v41', n42' R.:= v42', n43' R.:= v43', n44' R.:= v44', n45' R.:= v45', n46' R.:= v46', n47' R.:= v47', n48' R.:= v48', n49' R.:= v49', n50' R.:= v50', n51' R.:= v51', n52' R.:= v52'] where
221+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRCons f41 =<< R.unsafeRCons f42 =<< R.unsafeRCons f43 =<< R.unsafeRCons f44 =<< R.unsafeRCons f45 =<< R.unsafeRCons f46 =<< R.unsafeRCons f47 =<< R.unsafeRCons f48 =<< R.unsafeRCons f49 =<< R.unsafeRCons f50 =<< R.unsafeRCons f51 =<< R.unsafeRCons f52 =<< R.unsafeRNil 52
222+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r, n R.:= R.unsafeGet 40 r, n R.:= R.unsafeGet 41 r, n R.:= R.unsafeGet 42 r, n R.:= R.unsafeGet 43 r, n R.:= R.unsafeGet 44 r, n R.:= R.unsafeGet 45 r, n R.:= R.unsafeGet 46 r, n R.:= R.unsafeGet 47 r, n R.:= R.unsafeGet 48 r, n R.:= R.unsafeGet 49 r, n R.:= R.unsafeGet 50 r, n R.:= R.unsafeGet 51 r)
223+
224+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', n41 ~ n41', n42 ~ n42', n43 ~ n43', n44 ~ n44', n45 ~ n45', n46 ~ n46', n47 ~ n47', n48 ~ n48', n49 ~ n49', n50 ~ n50', n51 ~ n51', n52 ~ n52', n53 ~ n53', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40', v41 ~ v41', v42 ~ v42', v43 ~ v43', v44 ~ v44', v45 ~ v45', v46 ~ v46', v47 ~ v47', v48 ~ v48', v49 ~ v49', v50 ~ v50', v51 ~ v51', v52 ~ v52', v53 ~ v53') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40, n41 R.:= v41, n42 R.:= v42, n43 R.:= v43, n44 R.:= v44, n45 R.:= v45, n46 R.:= v46, n47 R.:= v47, n48 R.:= v48, n49 R.:= v49, n50 R.:= v50, n51 R.:= v51, n52 R.:= v52, n53 R.:= v53) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40', n41' R.:= v41', n42' R.:= v42', n43' R.:= v43', n44' R.:= v44', n45' R.:= v45', n46' R.:= v46', n47' R.:= v47', n48' R.:= v48', n49' R.:= v49', n50' R.:= v50', n51' R.:= v51', n52' R.:= v52', n53' R.:= v53'] where
225+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRCons f41 =<< R.unsafeRCons f42 =<< R.unsafeRCons f43 =<< R.unsafeRCons f44 =<< R.unsafeRCons f45 =<< R.unsafeRCons f46 =<< R.unsafeRCons f47 =<< R.unsafeRCons f48 =<< R.unsafeRCons f49 =<< R.unsafeRCons f50 =<< R.unsafeRCons f51 =<< R.unsafeRCons f52 =<< R.unsafeRCons f53 =<< R.unsafeRNil 53
226+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r, n R.:= R.unsafeGet 40 r, n R.:= R.unsafeGet 41 r, n R.:= R.unsafeGet 42 r, n R.:= R.unsafeGet 43 r, n R.:= R.unsafeGet 44 r, n R.:= R.unsafeGet 45 r, n R.:= R.unsafeGet 46 r, n R.:= R.unsafeGet 47 r, n R.:= R.unsafeGet 48 r, n R.:= R.unsafeGet 49 r, n R.:= R.unsafeGet 50 r, n R.:= R.unsafeGet 51 r, n R.:= R.unsafeGet 52 r)
227+
228+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', n41 ~ n41', n42 ~ n42', n43 ~ n43', n44 ~ n44', n45 ~ n45', n46 ~ n46', n47 ~ n47', n48 ~ n48', n49 ~ n49', n50 ~ n50', n51 ~ n51', n52 ~ n52', n53 ~ n53', n54 ~ n54', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40', v41 ~ v41', v42 ~ v42', v43 ~ v43', v44 ~ v44', v45 ~ v45', v46 ~ v46', v47 ~ v47', v48 ~ v48', v49 ~ v49', v50 ~ v50', v51 ~ v51', v52 ~ v52', v53 ~ v53', v54 ~ v54') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40, n41 R.:= v41, n42 R.:= v42, n43 R.:= v43, n44 R.:= v44, n45 R.:= v45, n46 R.:= v46, n47 R.:= v47, n48 R.:= v48, n49 R.:= v49, n50 R.:= v50, n51 R.:= v51, n52 R.:= v52, n53 R.:= v53, n54 R.:= v54) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40', n41' R.:= v41', n42' R.:= v42', n43' R.:= v43', n44' R.:= v44', n45' R.:= v45', n46' R.:= v46', n47' R.:= v47', n48' R.:= v48', n49' R.:= v49', n50' R.:= v50', n51' R.:= v51', n52' R.:= v52', n53' R.:= v53', n54' R.:= v54'] where
229+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRCons f41 =<< R.unsafeRCons f42 =<< R.unsafeRCons f43 =<< R.unsafeRCons f44 =<< R.unsafeRCons f45 =<< R.unsafeRCons f46 =<< R.unsafeRCons f47 =<< R.unsafeRCons f48 =<< R.unsafeRCons f49 =<< R.unsafeRCons f50 =<< R.unsafeRCons f51 =<< R.unsafeRCons f52 =<< R.unsafeRCons f53 =<< R.unsafeRCons f54 =<< R.unsafeRNil 54
230+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r, n R.:= R.unsafeGet 40 r, n R.:= R.unsafeGet 41 r, n R.:= R.unsafeGet 42 r, n R.:= R.unsafeGet 43 r, n R.:= R.unsafeGet 44 r, n R.:= R.unsafeGet 45 r, n R.:= R.unsafeGet 46 r, n R.:= R.unsafeGet 47 r, n R.:= R.unsafeGet 48 r, n R.:= R.unsafeGet 49 r, n R.:= R.unsafeGet 50 r, n R.:= R.unsafeGet 51 r, n R.:= R.unsafeGet 52 r, n R.:= R.unsafeGet 53 r)
231+
232+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', n41 ~ n41', n42 ~ n42', n43 ~ n43', n44 ~ n44', n45 ~ n45', n46 ~ n46', n47 ~ n47', n48 ~ n48', n49 ~ n49', n50 ~ n50', n51 ~ n51', n52 ~ n52', n53 ~ n53', n54 ~ n54', n55 ~ n55', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40', v41 ~ v41', v42 ~ v42', v43 ~ v43', v44 ~ v44', v45 ~ v45', v46 ~ v46', v47 ~ v47', v48 ~ v48', v49 ~ v49', v50 ~ v50', v51 ~ v51', v52 ~ v52', v53 ~ v53', v54 ~ v54', v55 ~ v55') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40, n41 R.:= v41, n42 R.:= v42, n43 R.:= v43, n44 R.:= v44, n45 R.:= v45, n46 R.:= v46, n47 R.:= v47, n48 R.:= v48, n49 R.:= v49, n50 R.:= v50, n51 R.:= v51, n52 R.:= v52, n53 R.:= v53, n54 R.:= v54, n55 R.:= v55) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40', n41' R.:= v41', n42' R.:= v42', n43' R.:= v43', n44' R.:= v44', n45' R.:= v45', n46' R.:= v46', n47' R.:= v47', n48' R.:= v48', n49' R.:= v49', n50' R.:= v50', n51' R.:= v51', n52' R.:= v52', n53' R.:= v53', n54' R.:= v54', n55' R.:= v55'] where
233+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRCons f41 =<< R.unsafeRCons f42 =<< R.unsafeRCons f43 =<< R.unsafeRCons f44 =<< R.unsafeRCons f45 =<< R.unsafeRCons f46 =<< R.unsafeRCons f47 =<< R.unsafeRCons f48 =<< R.unsafeRCons f49 =<< R.unsafeRCons f50 =<< R.unsafeRCons f51 =<< R.unsafeRCons f52 =<< R.unsafeRCons f53 =<< R.unsafeRCons f54 =<< R.unsafeRCons f55 =<< R.unsafeRNil 55
234+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r, n R.:= R.unsafeGet 40 r, n R.:= R.unsafeGet 41 r, n R.:= R.unsafeGet 42 r, n R.:= R.unsafeGet 43 r, n R.:= R.unsafeGet 44 r, n R.:= R.unsafeGet 45 r, n R.:= R.unsafeGet 46 r, n R.:= R.unsafeGet 47 r, n R.:= R.unsafeGet 48 r, n R.:= R.unsafeGet 49 r, n R.:= R.unsafeGet 50 r, n R.:= R.unsafeGet 51 r, n R.:= R.unsafeGet 52 r, n R.:= R.unsafeGet 53 r, n R.:= R.unsafeGet 54 r)
235+
236+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', n41 ~ n41', n42 ~ n42', n43 ~ n43', n44 ~ n44', n45 ~ n45', n46 ~ n46', n47 ~ n47', n48 ~ n48', n49 ~ n49', n50 ~ n50', n51 ~ n51', n52 ~ n52', n53 ~ n53', n54 ~ n54', n55 ~ n55', n56 ~ n56', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40', v41 ~ v41', v42 ~ v42', v43 ~ v43', v44 ~ v44', v45 ~ v45', v46 ~ v46', v47 ~ v47', v48 ~ v48', v49 ~ v49', v50 ~ v50', v51 ~ v51', v52 ~ v52', v53 ~ v53', v54 ~ v54', v55 ~ v55', v56 ~ v56') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40, n41 R.:= v41, n42 R.:= v42, n43 R.:= v43, n44 R.:= v44, n45 R.:= v45, n46 R.:= v46, n47 R.:= v47, n48 R.:= v48, n49 R.:= v49, n50 R.:= v50, n51 R.:= v51, n52 R.:= v52, n53 R.:= v53, n54 R.:= v54, n55 R.:= v55, n56 R.:= v56) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40', n41' R.:= v41', n42' R.:= v42', n43' R.:= v43', n44' R.:= v44', n45' R.:= v45', n46' R.:= v46', n47' R.:= v47', n48' R.:= v48', n49' R.:= v49', n50' R.:= v50', n51' R.:= v51', n52' R.:= v52', n53' R.:= v53', n54' R.:= v54', n55' R.:= v55', n56' R.:= v56'] where
237+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRCons f41 =<< R.unsafeRCons f42 =<< R.unsafeRCons f43 =<< R.unsafeRCons f44 =<< R.unsafeRCons f45 =<< R.unsafeRCons f46 =<< R.unsafeRCons f47 =<< R.unsafeRCons f48 =<< R.unsafeRCons f49 =<< R.unsafeRCons f50 =<< R.unsafeRCons f51 =<< R.unsafeRCons f52 =<< R.unsafeRCons f53 =<< R.unsafeRCons f54 =<< R.unsafeRCons f55 =<< R.unsafeRCons f56 =<< R.unsafeRNil 56
238+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r, n R.:= R.unsafeGet 40 r, n R.:= R.unsafeGet 41 r, n R.:= R.unsafeGet 42 r, n R.:= R.unsafeGet 43 r, n R.:= R.unsafeGet 44 r, n R.:= R.unsafeGet 45 r, n R.:= R.unsafeGet 46 r, n R.:= R.unsafeGet 47 r, n R.:= R.unsafeGet 48 r, n R.:= R.unsafeGet 49 r, n R.:= R.unsafeGet 50 r, n R.:= R.unsafeGet 51 r, n R.:= R.unsafeGet 52 r, n R.:= R.unsafeGet 53 r, n R.:= R.unsafeGet 54 r, n R.:= R.unsafeGet 55 r)
239+
240+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', n41 ~ n41', n42 ~ n42', n43 ~ n43', n44 ~ n44', n45 ~ n45', n46 ~ n46', n47 ~ n47', n48 ~ n48', n49 ~ n49', n50 ~ n50', n51 ~ n51', n52 ~ n52', n53 ~ n53', n54 ~ n54', n55 ~ n55', n56 ~ n56', n57 ~ n57', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40', v41 ~ v41', v42 ~ v42', v43 ~ v43', v44 ~ v44', v45 ~ v45', v46 ~ v46', v47 ~ v47', v48 ~ v48', v49 ~ v49', v50 ~ v50', v51 ~ v51', v52 ~ v52', v53 ~ v53', v54 ~ v54', v55 ~ v55', v56 ~ v56', v57 ~ v57') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40, n41 R.:= v41, n42 R.:= v42, n43 R.:= v43, n44 R.:= v44, n45 R.:= v45, n46 R.:= v46, n47 R.:= v47, n48 R.:= v48, n49 R.:= v49, n50 R.:= v50, n51 R.:= v51, n52 R.:= v52, n53 R.:= v53, n54 R.:= v54, n55 R.:= v55, n56 R.:= v56, n57 R.:= v57) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40', n41' R.:= v41', n42' R.:= v42', n43' R.:= v43', n44' R.:= v44', n45' R.:= v45', n46' R.:= v46', n47' R.:= v47', n48' R.:= v48', n49' R.:= v49', n50' R.:= v50', n51' R.:= v51', n52' R.:= v52', n53' R.:= v53', n54' R.:= v54', n55' R.:= v55', n56' R.:= v56', n57' R.:= v57'] where
241+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRCons f41 =<< R.unsafeRCons f42 =<< R.unsafeRCons f43 =<< R.unsafeRCons f44 =<< R.unsafeRCons f45 =<< R.unsafeRCons f46 =<< R.unsafeRCons f47 =<< R.unsafeRCons f48 =<< R.unsafeRCons f49 =<< R.unsafeRCons f50 =<< R.unsafeRCons f51 =<< R.unsafeRCons f52 =<< R.unsafeRCons f53 =<< R.unsafeRCons f54 =<< R.unsafeRCons f55 =<< R.unsafeRCons f56 =<< R.unsafeRCons f57 =<< R.unsafeRNil 57
242+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r, n R.:= R.unsafeGet 40 r, n R.:= R.unsafeGet 41 r, n R.:= R.unsafeGet 42 r, n R.:= R.unsafeGet 43 r, n R.:= R.unsafeGet 44 r, n R.:= R.unsafeGet 45 r, n R.:= R.unsafeGet 46 r, n R.:= R.unsafeGet 47 r, n R.:= R.unsafeGet 48 r, n R.:= R.unsafeGet 49 r, n R.:= R.unsafeGet 50 r, n R.:= R.unsafeGet 51 r, n R.:= R.unsafeGet 52 r, n R.:= R.unsafeGet 53 r, n R.:= R.unsafeGet 54 r, n R.:= R.unsafeGet 55 r, n R.:= R.unsafeGet 56 r)
243+
244+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', n41 ~ n41', n42 ~ n42', n43 ~ n43', n44 ~ n44', n45 ~ n45', n46 ~ n46', n47 ~ n47', n48 ~ n48', n49 ~ n49', n50 ~ n50', n51 ~ n51', n52 ~ n52', n53 ~ n53', n54 ~ n54', n55 ~ n55', n56 ~ n56', n57 ~ n57', n58 ~ n58', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40', v41 ~ v41', v42 ~ v42', v43 ~ v43', v44 ~ v44', v45 ~ v45', v46 ~ v46', v47 ~ v47', v48 ~ v48', v49 ~ v49', v50 ~ v50', v51 ~ v51', v52 ~ v52', v53 ~ v53', v54 ~ v54', v55 ~ v55', v56 ~ v56', v57 ~ v57', v58 ~ v58') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40, n41 R.:= v41, n42 R.:= v42, n43 R.:= v43, n44 R.:= v44, n45 R.:= v45, n46 R.:= v46, n47 R.:= v47, n48 R.:= v48, n49 R.:= v49, n50 R.:= v50, n51 R.:= v51, n52 R.:= v52, n53 R.:= v53, n54 R.:= v54, n55 R.:= v55, n56 R.:= v56, n57 R.:= v57, n58 R.:= v58) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40', n41' R.:= v41', n42' R.:= v42', n43' R.:= v43', n44' R.:= v44', n45' R.:= v45', n46' R.:= v46', n47' R.:= v47', n48' R.:= v48', n49' R.:= v49', n50' R.:= v50', n51' R.:= v51', n52' R.:= v52', n53' R.:= v53', n54' R.:= v54', n55' R.:= v55', n56' R.:= v56', n57' R.:= v57', n58' R.:= v58'] where
245+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRCons f41 =<< R.unsafeRCons f42 =<< R.unsafeRCons f43 =<< R.unsafeRCons f44 =<< R.unsafeRCons f45 =<< R.unsafeRCons f46 =<< R.unsafeRCons f47 =<< R.unsafeRCons f48 =<< R.unsafeRCons f49 =<< R.unsafeRCons f50 =<< R.unsafeRCons f51 =<< R.unsafeRCons f52 =<< R.unsafeRCons f53 =<< R.unsafeRCons f54 =<< R.unsafeRCons f55 =<< R.unsafeRCons f56 =<< R.unsafeRCons f57 =<< R.unsafeRCons f58 =<< R.unsafeRNil 58
246+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r, n R.:= R.unsafeGet 40 r, n R.:= R.unsafeGet 41 r, n R.:= R.unsafeGet 42 r, n R.:= R.unsafeGet 43 r, n R.:= R.unsafeGet 44 r, n R.:= R.unsafeGet 45 r, n R.:= R.unsafeGet 46 r, n R.:= R.unsafeGet 47 r, n R.:= R.unsafeGet 48 r, n R.:= R.unsafeGet 49 r, n R.:= R.unsafeGet 50 r, n R.:= R.unsafeGet 51 r, n R.:= R.unsafeGet 52 r, n R.:= R.unsafeGet 53 r, n R.:= R.unsafeGet 54 r, n R.:= R.unsafeGet 55 r, n R.:= R.unsafeGet 56 r, n R.:= R.unsafeGet 57 r)
247+
248+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', n41 ~ n41', n42 ~ n42', n43 ~ n43', n44 ~ n44', n45 ~ n45', n46 ~ n46', n47 ~ n47', n48 ~ n48', n49 ~ n49', n50 ~ n50', n51 ~ n51', n52 ~ n52', n53 ~ n53', n54 ~ n54', n55 ~ n55', n56 ~ n56', n57 ~ n57', n58 ~ n58', n59 ~ n59', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40', v41 ~ v41', v42 ~ v42', v43 ~ v43', v44 ~ v44', v45 ~ v45', v46 ~ v46', v47 ~ v47', v48 ~ v48', v49 ~ v49', v50 ~ v50', v51 ~ v51', v52 ~ v52', v53 ~ v53', v54 ~ v54', v55 ~ v55', v56 ~ v56', v57 ~ v57', v58 ~ v58', v59 ~ v59') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40, n41 R.:= v41, n42 R.:= v42, n43 R.:= v43, n44 R.:= v44, n45 R.:= v45, n46 R.:= v46, n47 R.:= v47, n48 R.:= v48, n49 R.:= v49, n50 R.:= v50, n51 R.:= v51, n52 R.:= v52, n53 R.:= v53, n54 R.:= v54, n55 R.:= v55, n56 R.:= v56, n57 R.:= v57, n58 R.:= v58, n59 R.:= v59) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40', n41' R.:= v41', n42' R.:= v42', n43' R.:= v43', n44' R.:= v44', n45' R.:= v45', n46' R.:= v46', n47' R.:= v47', n48' R.:= v48', n49' R.:= v49', n50' R.:= v50', n51' R.:= v51', n52' R.:= v52', n53' R.:= v53', n54' R.:= v54', n55' R.:= v55', n56' R.:= v56', n57' R.:= v57', n58' R.:= v58', n59' R.:= v59'] where
249+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRCons f41 =<< R.unsafeRCons f42 =<< R.unsafeRCons f43 =<< R.unsafeRCons f44 =<< R.unsafeRCons f45 =<< R.unsafeRCons f46 =<< R.unsafeRCons f47 =<< R.unsafeRCons f48 =<< R.unsafeRCons f49 =<< R.unsafeRCons f50 =<< R.unsafeRCons f51 =<< R.unsafeRCons f52 =<< R.unsafeRCons f53 =<< R.unsafeRCons f54 =<< R.unsafeRCons f55 =<< R.unsafeRCons f56 =<< R.unsafeRCons f57 =<< R.unsafeRCons f58 =<< R.unsafeRCons f59 =<< R.unsafeRNil 59
250+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r, n R.:= R.unsafeGet 40 r, n R.:= R.unsafeGet 41 r, n R.:= R.unsafeGet 42 r, n R.:= R.unsafeGet 43 r, n R.:= R.unsafeGet 44 r, n R.:= R.unsafeGet 45 r, n R.:= R.unsafeGet 46 r, n R.:= R.unsafeGet 47 r, n R.:= R.unsafeGet 48 r, n R.:= R.unsafeGet 49 r, n R.:= R.unsafeGet 50 r, n R.:= R.unsafeGet 51 r, n R.:= R.unsafeGet 52 r, n R.:= R.unsafeGet 53 r, n R.:= R.unsafeGet 54 r, n R.:= R.unsafeGet 55 r, n R.:= R.unsafeGet 56 r, n R.:= R.unsafeGet 57 r, n R.:= R.unsafeGet 58 r)
251+
252+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', n41 ~ n41', n42 ~ n42', n43 ~ n43', n44 ~ n44', n45 ~ n45', n46 ~ n46', n47 ~ n47', n48 ~ n48', n49 ~ n49', n50 ~ n50', n51 ~ n51', n52 ~ n52', n53 ~ n53', n54 ~ n54', n55 ~ n55', n56 ~ n56', n57 ~ n57', n58 ~ n58', n59 ~ n59', n60 ~ n60', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40', v41 ~ v41', v42 ~ v42', v43 ~ v43', v44 ~ v44', v45 ~ v45', v46 ~ v46', v47 ~ v47', v48 ~ v48', v49 ~ v49', v50 ~ v50', v51 ~ v51', v52 ~ v52', v53 ~ v53', v54 ~ v54', v55 ~ v55', v56 ~ v56', v57 ~ v57', v58 ~ v58', v59 ~ v59', v60 ~ v60') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40, n41 R.:= v41, n42 R.:= v42, n43 R.:= v43, n44 R.:= v44, n45 R.:= v45, n46 R.:= v46, n47 R.:= v47, n48 R.:= v48, n49 R.:= v49, n50 R.:= v50, n51 R.:= v51, n52 R.:= v52, n53 R.:= v53, n54 R.:= v54, n55 R.:= v55, n56 R.:= v56, n57 R.:= v57, n58 R.:= v58, n59 R.:= v59, n60 R.:= v60) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40', n41' R.:= v41', n42' R.:= v42', n43' R.:= v43', n44' R.:= v44', n45' R.:= v45', n46' R.:= v46', n47' R.:= v47', n48' R.:= v48', n49' R.:= v49', n50' R.:= v50', n51' R.:= v51', n52' R.:= v52', n53' R.:= v53', n54' R.:= v54', n55' R.:= v55', n56' R.:= v56', n57' R.:= v57', n58' R.:= v58', n59' R.:= v59', n60' R.:= v60'] where
253+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRCons f41 =<< R.unsafeRCons f42 =<< R.unsafeRCons f43 =<< R.unsafeRCons f44 =<< R.unsafeRCons f45 =<< R.unsafeRCons f46 =<< R.unsafeRCons f47 =<< R.unsafeRCons f48 =<< R.unsafeRCons f49 =<< R.unsafeRCons f50 =<< R.unsafeRCons f51 =<< R.unsafeRCons f52 =<< R.unsafeRCons f53 =<< R.unsafeRCons f54 =<< R.unsafeRCons f55 =<< R.unsafeRCons f56 =<< R.unsafeRCons f57 =<< R.unsafeRCons f58 =<< R.unsafeRCons f59 =<< R.unsafeRCons f60 =<< R.unsafeRNil 60
254+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r, n R.:= R.unsafeGet 40 r, n R.:= R.unsafeGet 41 r, n R.:= R.unsafeGet 42 r, n R.:= R.unsafeGet 43 r, n R.:= R.unsafeGet 44 r, n R.:= R.unsafeGet 45 r, n R.:= R.unsafeGet 46 r, n R.:= R.unsafeGet 47 r, n R.:= R.unsafeGet 48 r, n R.:= R.unsafeGet 49 r, n R.:= R.unsafeGet 50 r, n R.:= R.unsafeGet 51 r, n R.:= R.unsafeGet 52 r, n R.:= R.unsafeGet 53 r, n R.:= R.unsafeGet 54 r, n R.:= R.unsafeGet 55 r, n R.:= R.unsafeGet 56 r, n R.:= R.unsafeGet 57 r, n R.:= R.unsafeGet 58 r, n R.:= R.unsafeGet 59 r)
255+
256+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', n41 ~ n41', n42 ~ n42', n43 ~ n43', n44 ~ n44', n45 ~ n45', n46 ~ n46', n47 ~ n47', n48 ~ n48', n49 ~ n49', n50 ~ n50', n51 ~ n51', n52 ~ n52', n53 ~ n53', n54 ~ n54', n55 ~ n55', n56 ~ n56', n57 ~ n57', n58 ~ n58', n59 ~ n59', n60 ~ n60', n61 ~ n61', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40', v41 ~ v41', v42 ~ v42', v43 ~ v43', v44 ~ v44', v45 ~ v45', v46 ~ v46', v47 ~ v47', v48 ~ v48', v49 ~ v49', v50 ~ v50', v51 ~ v51', v52 ~ v52', v53 ~ v53', v54 ~ v54', v55 ~ v55', v56 ~ v56', v57 ~ v57', v58 ~ v58', v59 ~ v59', v60 ~ v60', v61 ~ v61') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40, n41 R.:= v41, n42 R.:= v42, n43 R.:= v43, n44 R.:= v44, n45 R.:= v45, n46 R.:= v46, n47 R.:= v47, n48 R.:= v48, n49 R.:= v49, n50 R.:= v50, n51 R.:= v51, n52 R.:= v52, n53 R.:= v53, n54 R.:= v54, n55 R.:= v55, n56 R.:= v56, n57 R.:= v57, n58 R.:= v58, n59 R.:= v59, n60 R.:= v60, n61 R.:= v61) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40', n41' R.:= v41', n42' R.:= v42', n43' R.:= v43', n44' R.:= v44', n45' R.:= v45', n46' R.:= v46', n47' R.:= v47', n48' R.:= v48', n49' R.:= v49', n50' R.:= v50', n51' R.:= v51', n52' R.:= v52', n53' R.:= v53', n54' R.:= v54', n55' R.:= v55', n56' R.:= v56', n57' R.:= v57', n58' R.:= v58', n59' R.:= v59', n60' R.:= v60', n61' R.:= v61'] where
257+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRCons f41 =<< R.unsafeRCons f42 =<< R.unsafeRCons f43 =<< R.unsafeRCons f44 =<< R.unsafeRCons f45 =<< R.unsafeRCons f46 =<< R.unsafeRCons f47 =<< R.unsafeRCons f48 =<< R.unsafeRCons f49 =<< R.unsafeRCons f50 =<< R.unsafeRCons f51 =<< R.unsafeRCons f52 =<< R.unsafeRCons f53 =<< R.unsafeRCons f54 =<< R.unsafeRCons f55 =<< R.unsafeRCons f56 =<< R.unsafeRCons f57 =<< R.unsafeRCons f58 =<< R.unsafeRCons f59 =<< R.unsafeRCons f60 =<< R.unsafeRCons f61 =<< R.unsafeRNil 61
258+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r, n R.:= R.unsafeGet 40 r, n R.:= R.unsafeGet 41 r, n R.:= R.unsafeGet 42 r, n R.:= R.unsafeGet 43 r, n R.:= R.unsafeGet 44 r, n R.:= R.unsafeGet 45 r, n R.:= R.unsafeGet 46 r, n R.:= R.unsafeGet 47 r, n R.:= R.unsafeGet 48 r, n R.:= R.unsafeGet 49 r, n R.:= R.unsafeGet 50 r, n R.:= R.unsafeGet 51 r, n R.:= R.unsafeGet 52 r, n R.:= R.unsafeGet 53 r, n R.:= R.unsafeGet 54 r, n R.:= R.unsafeGet 55 r, n R.:= R.unsafeGet 56 r, n R.:= R.unsafeGet 57 r, n R.:= R.unsafeGet 58 r, n R.:= R.unsafeGet 59 r, n R.:= R.unsafeGet 60 r)
259+
260+instance (n1 ~ n1', n2 ~ n2', n3 ~ n3', n4 ~ n4', n5 ~ n5', n6 ~ n6', n7 ~ n7', n8 ~ n8', n9 ~ n9', n10 ~ n10', n11 ~ n11', n12 ~ n12', n13 ~ n13', n14 ~ n14', n15 ~ n15', n16 ~ n16', n17 ~ n17', n18 ~ n18', n19 ~ n19', n20 ~ n20', n21 ~ n21', n22 ~ n22', n23 ~ n23', n24 ~ n24', n25 ~ n25', n26 ~ n26', n27 ~ n27', n28 ~ n28', n29 ~ n29', n30 ~ n30', n31 ~ n31', n32 ~ n32', n33 ~ n33', n34 ~ n34', n35 ~ n35', n36 ~ n36', n37 ~ n37', n38 ~ n38', n39 ~ n39', n40 ~ n40', n41 ~ n41', n42 ~ n42', n43 ~ n43', n44 ~ n44', n45 ~ n45', n46 ~ n46', n47 ~ n47', n48 ~ n48', n49 ~ n49', n50 ~ n50', n51 ~ n51', n52 ~ n52', n53 ~ n53', n54 ~ n54', n55 ~ n55', n56 ~ n56', n57 ~ n57', n58 ~ n58', n59 ~ n59', n60 ~ n60', n61 ~ n61', n62 ~ n62', v1 ~ v1', v2 ~ v2', v3 ~ v3', v4 ~ v4', v5 ~ v5', v6 ~ v6', v7 ~ v7', v8 ~ v8', v9 ~ v9', v10 ~ v10', v11 ~ v11', v12 ~ v12', v13 ~ v13', v14 ~ v14', v15 ~ v15', v16 ~ v16', v17 ~ v17', v18 ~ v18', v19 ~ v19', v20 ~ v20', v21 ~ v21', v22 ~ v22', v23 ~ v23', v24 ~ v24', v25 ~ v25', v26 ~ v26', v27 ~ v27', v28 ~ v28', v29 ~ v29', v30 ~ v30', v31 ~ v31', v32 ~ v32', v33 ~ v33', v34 ~ v34', v35 ~ v35', v36 ~ v36', v37 ~ v37', v38 ~ v38', v39 ~ v39', v40 ~ v40', v41 ~ v41', v42 ~ v42', v43 ~ v43', v44 ~ v44', v45 ~ v45', v46 ~ v46', v47 ~ v47', v48 ~ v48', v49 ~ v49', v50 ~ v50', v51 ~ v51', v52 ~ v52', v53 ~ v53', v54 ~ v54', v55 ~ v55', v56 ~ v56', v57 ~ v57', v58 ~ v58', v59 ~ v59', v60 ~ v60', v61 ~ v61', v62 ~ v62') => RecTuple (n1 R.:= v1, n2 R.:= v2, n3 R.:= v3, n4 R.:= v4, n5 R.:= v5, n6 R.:= v6, n7 R.:= v7, n8 R.:= v8, n9 R.:= v9, n10 R.:= v10, n11 R.:= v11, n12 R.:= v12, n13 R.:= v13, n14 R.:= v14, n15 R.:= v15, n16 R.:= v16, n17 R.:= v17, n18 R.:= v18, n19 R.:= v19, n20 R.:= v20, n21 R.:= v21, n22 R.:= v22, n23 R.:= v23, n24 R.:= v24, n25 R.:= v25, n26 R.:= v26, n27 R.:= v27, n28 R.:= v28, n29 R.:= v29, n30 R.:= v30, n31 R.:= v31, n32 R.:= v32, n33 R.:= v33, n34 R.:= v34, n35 R.:= v35, n36 R.:= v36, n37 R.:= v37, n38 R.:= v38, n39 R.:= v39, n40 R.:= v40, n41 R.:= v41, n42 R.:= v42, n43 R.:= v43, n44 R.:= v44, n45 R.:= v45, n46 R.:= v46, n47 R.:= v47, n48 R.:= v48, n49 R.:= v49, n50 R.:= v50, n51 R.:= v51, n52 R.:= v52, n53 R.:= v53, n54 R.:= v54, n55 R.:= v55, n56 R.:= v56, n57 R.:= v57, n58 R.:= v58, n59 R.:= v59, n60 R.:= v60, n61 R.:= v61, n62 R.:= v62) '[n1' R.:= v1', n2' R.:= v2', n3' R.:= v3', n4' R.:= v4', n5' R.:= v5', n6' R.:= v6', n7' R.:= v7', n8' R.:= v8', n9' R.:= v9', n10' R.:= v10', n11' R.:= v11', n12' R.:= v12', n13' R.:= v13', n14' R.:= v14', n15' R.:= v15', n16' R.:= v16', n17' R.:= v17', n18' R.:= v18', n19' R.:= v19', n20' R.:= v20', n21' R.:= v21', n22' R.:= v22', n23' R.:= v23', n24' R.:= v24', n25' R.:= v25', n26' R.:= v26', n27' R.:= v27', n28' R.:= v28', n29' R.:= v29', n30' R.:= v30', n31' R.:= v31', n32' R.:= v32', n33' R.:= v33', n34' R.:= v34', n35' R.:= v35', n36' R.:= v36', n37' R.:= v37', n38' R.:= v38', n39' R.:= v39', n40' R.:= v40', n41' R.:= v41', n42' R.:= v42', n43' R.:= v43', n44' R.:= v44', n45' R.:= v45', n46' R.:= v46', n47' R.:= v47', n48' R.:= v48', n49' R.:= v49', n50' R.:= v50', n51' R.:= v51', n52' R.:= v52', n53' R.:= v53', n54' R.:= v54', n55' R.:= v55', n56' R.:= v56', n57' R.:= v57', n58' R.:= v58', n59' R.:= v59', n60' R.:= v60', n61' R.:= v61', n62' R.:= v62'] where
261+ fromTuple (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26, f27, f28, f29, f30, f31, f32, f33, f34, f35, f36, f37, f38, f39, f40, f41, f42, f43, f44, f45, f46, f47, f48, f49, f50, f51, f52, f53, f54, f55, f56, f57, f58, f59, f60, f61, f62) = R.create $ R.unsafeRCons f1 =<< R.unsafeRCons f2 =<< R.unsafeRCons f3 =<< R.unsafeRCons f4 =<< R.unsafeRCons f5 =<< R.unsafeRCons f6 =<< R.unsafeRCons f7 =<< R.unsafeRCons f8 =<< R.unsafeRCons f9 =<< R.unsafeRCons f10 =<< R.unsafeRCons f11 =<< R.unsafeRCons f12 =<< R.unsafeRCons f13 =<< R.unsafeRCons f14 =<< R.unsafeRCons f15 =<< R.unsafeRCons f16 =<< R.unsafeRCons f17 =<< R.unsafeRCons f18 =<< R.unsafeRCons f19 =<< R.unsafeRCons f20 =<< R.unsafeRCons f21 =<< R.unsafeRCons f22 =<< R.unsafeRCons f23 =<< R.unsafeRCons f24 =<< R.unsafeRCons f25 =<< R.unsafeRCons f26 =<< R.unsafeRCons f27 =<< R.unsafeRCons f28 =<< R.unsafeRCons f29 =<< R.unsafeRCons f30 =<< R.unsafeRCons f31 =<< R.unsafeRCons f32 =<< R.unsafeRCons f33 =<< R.unsafeRCons f34 =<< R.unsafeRCons f35 =<< R.unsafeRCons f36 =<< R.unsafeRCons f37 =<< R.unsafeRCons f38 =<< R.unsafeRCons f39 =<< R.unsafeRCons f40 =<< R.unsafeRCons f41 =<< R.unsafeRCons f42 =<< R.unsafeRCons f43 =<< R.unsafeRCons f44 =<< R.unsafeRCons f45 =<< R.unsafeRCons f46 =<< R.unsafeRCons f47 =<< R.unsafeRCons f48 =<< R.unsafeRCons f49 =<< R.unsafeRCons f50 =<< R.unsafeRCons f51 =<< R.unsafeRCons f52 =<< R.unsafeRCons f53 =<< R.unsafeRCons f54 =<< R.unsafeRCons f55 =<< R.unsafeRCons f56 =<< R.unsafeRCons f57 =<< R.unsafeRCons f58 =<< R.unsafeRCons f59 =<< R.unsafeRCons f60 =<< R.unsafeRCons f61 =<< R.unsafeRCons f62 =<< R.unsafeRNil 62
262+ toTuple r = let n = R.FldProxy :: R.FldProxy "" in unsafeCoerce (n R.:= R.unsafeGet 0 r, n R.:= R.unsafeGet 1 r, n R.:= R.unsafeGet 2 r, n R.:= R.unsafeGet 3 r, n R.:= R.unsafeGet 4 r, n R.:= R.unsafeGet 5 r, n R.:= R.unsafeGet 6 r, n R.:= R.unsafeGet 7 r, n R.:= R.unsafeGet 8 r, n R.:= R.unsafeGet 9 r, n R.:= R.unsafeGet 10 r, n R.:= R.unsafeGet 11 r, n R.:= R.unsafeGet 12 r, n R.:= R.unsafeGet 13 r, n R.:= R.unsafeGet 14 r, n R.:= R.unsafeGet 15 r, n R.:= R.unsafeGet 16 r, n R.:= R.unsafeGet 17 r, n R.:= R.unsafeGet 18 r, n R.:= R.unsafeGet 19 r, n R.:= R.unsafeGet 20 r, n R.:= R.unsafeGet 21 r, n R.:= R.unsafeGet 22 r, n R.:= R.unsafeGet 23 r, n R.:= R.unsafeGet 24 r, n R.:= R.unsafeGet 25 r, n R.:= R.unsafeGet 26 r, n R.:= R.unsafeGet 27 r, n R.:= R.unsafeGet 28 r, n R.:= R.unsafeGet 29 r, n R.:= R.unsafeGet 30 r, n R.:= R.unsafeGet 31 r, n R.:= R.unsafeGet 32 r, n R.:= R.unsafeGet 33 r, n R.:= R.unsafeGet 34 r, n R.:= R.unsafeGet 35 r, n R.:= R.unsafeGet 36 r, n R.:= R.unsafeGet 37 r, n R.:= R.unsafeGet 38 r, n R.:= R.unsafeGet 39 r, n R.:= R.unsafeGet 40 r, n R.:= R.unsafeGet 41 r, n R.:= R.unsafeGet 42 r, n R.:= R.unsafeGet 43 r, n R.:= R.unsafeGet 44 r, n R.:= R.unsafeGet 45 r, n R.:= R.unsafeGet 46 r, n R.:= R.unsafeGet 47 r, n R.:= R.unsafeGet 48 r, n R.:= R.unsafeGet 49 r, n R.:= R.unsafeGet 50 r, n R.:= R.unsafeGet 51 r, n R.:= R.unsafeGet 52 r, n R.:= R.unsafeGet 53 r, n R.:= R.unsafeGet 54 r, n R.:= R.unsafeGet 55 r, n R.:= R.unsafeGet 56 r, n R.:= R.unsafeGet 57 r, n R.:= R.unsafeGet 58 r, n R.:= R.unsafeGet 59 r, n R.:= R.unsafeGet 60 r, n R.:= R.unsafeGet 61 r)
src/ProjectM37.hsnew file+246
@@ -0,0 +1,246 @@
1+{-# OPTIONS_GHC -Wno-orphans #-}
2+
3+module ProjectM37
4+ ( connect,
5+ DbError (..),
6+ DbConn,
7+ run,
8+ define,
9+ insert,
10+ query,
11+ RelVar (..),
12+ Rel,
13+ rel,
14+ difference,
15+ project,
16+ project',
17+ join,
18+ rename,
19+ union,
20+ group,
21+ ungroup,
22+ )
23+where
24+
25+import Algebra.Lattice hiding (Join)
26+import Control.Monad.Catch
27+import Control.Monad.IO.Class
28+import Data.Proxy
29+import Data.Set (Set)
30+import Data.Set qualified as S
31+import Data.Text (Text)
32+import Data.Text qualified as T
33+import Data.Vector qualified as V
34+import GHC.Generics
35+import GHC.TypeLits
36+import JRec (Tup, (:=) (..))
37+import JRec qualified as Tup
38+import ProjectM36.Atomable
39+import ProjectM36.Base
40+import ProjectM36.Client.Simple (ConnectionInfo, Db, DbConn, DbError, execute, simpleConnectProjectM36, withTransaction)
41+import ProjectM36.Client.Simple qualified as M36
42+import ProjectM36.Tuple (atomForAttributeName)
43+
44+deriving anyclass instance Exception DbError
45+
46+throwEither :: (MonadThrow m, Exception e) => m (Either e a) -> m a
47+throwEither = (>>= either throwM pure)
48+
49+connect :: (MonadThrow m, MonadIO m) => ConnectionInfo -> m DbConn
50+connect = throwEither . liftIO . simpleConnectProjectM36
51+
52+run :: (MonadThrow m, MonadIO m) => DbConn -> Db a -> m a
53+run conn db = throwEither $ liftIO $ withTransaction conn db
54+
55+insert :: forall a fields. (RelVar a, Tup.FromNative (Rep a) fields, RelatableFields fields) => [a] -> Db ()
56+insert aa =
57+ execute $
58+ Insert (relVar @a) $
59+ MakeStaticRelation
60+ (Attributes $ V.fromList $ attributes @fields @fields)
61+ (RelationTupleSet $ fmap (relTuple . Tup.fromNative) aa)
62+
63+query :: forall fields. (RelatableFields fields) => Rel fields -> Db [Tup fields]
64+query (Rel q) = do
65+ Relation _ (RelationTupleSet tups) <- M36.query q
66+ case traverse (extractFieldsFromTuple @fields @fields) tups of
67+ Nothing -> liftIO $ throwM TupleMismatch
68+ Just x -> pure x
69+
70+data TupleMismatch = TupleMismatch
71+ deriving stock (Show)
72+ deriving anyclass (Exception)
73+
74+newtype Rel fields = Rel (RelationalExprBase ())
75+
76+instance Lattice (Rel fields) where
77+ Rel x \/ Rel y = Rel $ Union x y
78+
79+-- Rel x /\ Rel y = Rel $
80+
81+class (Generic a) => RelVar a where
82+ relVar :: RelVarName
83+
84+rel :: forall a fields. (RelVar a, Tup.FromNative (Rep a) fields) => Rel fields
85+rel = Rel $ RelationVariable (relVar @a) ()
86+
87+difference :: Rel fields -> Rel fields -> Rel fields
88+difference (Rel x) (Rel y) = Rel $ Difference x y
89+
90+project :: forall names fields. (SymbolSet names) => Rel fields -> Rel (Projected names fields)
91+project (Rel x) = Rel $ Project (AttributeNames $ symbolSet @names) x
92+
93+project' :: forall names fields. (SymbolSet names) => Rel fields -> Rel (DropFields names fields)
94+project' (Rel x) = Rel $ Project (InvertedAttributeNames $ symbolSet @names) x
95+
96+join :: forall fields fields'. Rel fields -> Rel fields' -> Rel (fields ++ Difference fields' fields)
97+join (Rel x) (Rel y) = Rel $ Join x y
98+
99+union :: Rel fields -> Rel fields -> Rel fields
100+union (Rel x) (Rel y) = Rel $ Union x y
101+
102+rename :: forall renames fields. (RenameFields renames) => Rel fields -> Rel (Rename renames fields)
103+rename (Rel x) = Rel $ Rename (renameFields @renames) x
104+
105+group ::
106+ forall groupBy field fields.
107+ (KnownSymbol field, SymbolSet groupBy) =>
108+ Rel fields ->
109+ Rel ((field := [Tup (Projected groupBy fields)]) ': DropFields groupBy fields)
110+group (Rel x) = Rel $ Group (AttributeNames $ symbolSet @groupBy) (T.pack $ symbolVal @field Proxy) x
111+
112+ungroup ::
113+ forall name fields.
114+ (KnownSymbol name) =>
115+ Rel fields ->
116+ Rel (UnnestRelation name fields ++ DropField name fields)
117+ungroup (Rel x) = Rel $ Ungroup (T.pack $ symbolVal @name Proxy) x
118+
119+define ::
120+ forall record fields.
121+ (RelatableFields fields, Tup.FromNative (Rep record) fields, RelVar record) =>
122+ Db ()
123+define = execute $ Define (relVar @record) (NakedAttributeExpr <$> attributes @fields @fields)
124+
125+class RenameFields fields where
126+ renameFields :: Set (AttributeName, AttributeName)
127+
128+instance RenameFields '[] where
129+ renameFields = S.empty
130+
131+instance (RenameFields renames, KnownSymbol old, KnownSymbol new) => RenameFields ('(old, new) ': renames) where
132+ renameFields = S.insert (T.pack $ symbolVal @old Proxy, T.pack $ symbolVal @new Proxy) (renameFields @renames)
133+
134+type family Rename (renames :: [(Symbol, Symbol)]) fields where
135+ Rename '[] fields = fields
136+ Rename ('(old, new) ': renames) fields = Rename renames (RenameField old new fields)
137+
138+type family RenameField old new fields where
139+ RenameField _ _ '[] = '[]
140+ RenameField old new ((old := val) ': rest) = (new := val) ': rest
141+ RenameField old new (field ': fields) = field ': RenameField old new fields
142+
143+type family Difference fields fields' where
144+ Difference fields '[] = fields
145+ Difference fields (name := _ ': fields') = Difference (DropField name fields) fields'
146+
147+type family (++) xs ys where
148+ (x ': xs) ++ ys = x ': (xs ++ ys)
149+ '[] ++ ys = ys
150+
151+class SymbolSet symbols where
152+ symbolSet :: Set Text
153+
154+instance SymbolSet '[] where
155+ symbolSet = S.empty
156+
157+instance (KnownSymbol sym, SymbolSet syms) => SymbolSet (sym ': syms) where
158+ symbolSet = S.insert (T.pack $ symbolVal @sym Proxy) $ symbolSet @syms
159+
160+type family UnnestRelation name fields where
161+ UnnestRelation name (name := [Tup fields'] ': _) = fields'
162+ UnnestRelation name (_ ': fields) = UnnestRelation name fields
163+
164+type family Projected names fields where
165+ Projected '[] _ = '[]
166+ Projected (name ': names) fields = FindField name fields ': Projected names fields
167+
168+type family FindField name fields where
169+ FindField name (name := val ': _) = name := val
170+ FindField name (_ ': fields) = FindField name fields
171+ FindField name '[] = TypeError ('Text "Field " :<>: 'Text name :<>: 'Text " not present.")
172+
173+type family DropField name fields where
174+ DropField _ '[] = '[]
175+ DropField name (name := val ': fields) = fields
176+ DropField name (field ': fields) = field ': DropField name fields
177+
178+type family DropFields names fields where
179+ DropFields '[] fields = fields
180+ DropFields (name ': names) fields = DropFields names (DropField name fields)
181+
182+instance (RelatableFields fields) => BoundedJoinSemiLattice (Rel fields) where
183+ bottom = Rel $ ExistingRelation $ Relation (tupAttributes @fields) (RelationTupleSet [])
184+
185+tupAttributes :: forall fields. (RelatableFields fields) => Attributes
186+tupAttributes = Attributes $ V.fromList $ attributes @fields @fields
187+
188+relTuple :: forall fields. (RelatableFields fields) => Tup fields -> RelationTuple
189+relTuple tup = RelationTuple (Attributes $ V.fromList (attributes @fields @fields)) (V.fromList (atoms @fields @fields tup))
190+
191+type RelatableFields fields = RelatableFields' fields fields
192+
193+class RelatableFields' allFields fieldsLeft where
194+ attributes :: [Attribute]
195+ atoms :: Tup allFields -> [Atom]
196+ extractFieldsFromTuple :: RelationTuple -> Maybe (Tup fieldsLeft)
197+
198+instance RelatableFields' allFields '[] where
199+ attributes = []
200+ atoms _ = []
201+ extractFieldsFromTuple _ = Just Tup.rnil
202+
203+instance
204+ ( Relatable name value (IsSubrelation value),
205+ RelatableFields' allFields fields,
206+ Tup.Has name allFields value,
207+ KnownSymbol name,
208+ Tup.RemoveAccessTo name fields ~ fields,
209+ KnownNat (1 + Tup.RecSize fields),
210+ KnownNat (Tup.RecSize fields),
211+ Tup.RecCopy fields fields ((name := value) ': fields)
212+ ) =>
213+ RelatableFields' allFields (name := value ': fields)
214+ where
215+ attributes = attribute @name @value : attributes @allFields @fields
216+ atoms tup = atom @name @value (Tup.get @name tup) : atoms @allFields @fields tup
217+ extractFieldsFromTuple tup = case atomForAttributeName (T.pack $ symbolVal @name Proxy) tup of
218+ Left _ -> Nothing
219+ Right val -> do
220+ val' <- extractFieldFromAtom @name val
221+ Tup.insert (Tup.FldProxy @name := val') <$> extractFieldsFromTuple @allFields @fields tup
222+
223+class (IsSubrelation value ~ subrelation) => Relatable name value (subrelation :: Bool) where
224+ attribute :: Attribute
225+ atom :: value -> Atom
226+ extractFieldFromAtom :: Atom -> Maybe value
227+
228+instance (RelatableFields fields, KnownSymbol name) => Relatable name [Tup fields] 'True where
229+ attribute =
230+ Attribute (T.pack (symbolVal @name Proxy)) (RelationAtomType $ Attributes $ V.fromList $ attributes @fields @fields)
231+
232+ atom tup = RelationAtom (Relation (Attributes $ V.fromList $ attributes @fields @fields) (RelationTupleSet (relTuple <$> tup)))
233+
234+ extractFieldFromAtom (RelationAtom (Relation _ (RelationTupleSet tups))) =
235+ traverse (extractFieldsFromTuple @fields) tups
236+ extractFieldFromAtom _ = Nothing
237+
238+instance (IsSubrelation atom ~ 'False, Atomable atom, KnownSymbol name) => Relatable name atom 'False where
239+ attribute = Attribute (T.pack (symbolVal @name Proxy)) (toAtomType @atom Proxy)
240+
241+ atom = toAtom
242+ extractFieldFromAtom = Just . fromAtom
243+
244+type family IsSubrelation t :: Bool where
245+ IsSubrelation [Tup _] = 'True
246+ IsSubrelation _ = 'False
stack.yamlnew file+19
@@ -0,0 +1,19 @@
1+resolver: lts-22.43
2+
3+nix:
4+ enable: true
5+ packages:
6+ - zlib
7+
8+packages:
9+ - .
10+
11+extra-deps:
12+ - project-m36-1.1.1
13+ - curryer-rpc-0.4.0@sha256:a270cbb8f7b29fb580e4a798350bf6d4c42b5b553b27b182589b42be74e9c6d3,2906
14+ - fast-builder-0.1.5.0@sha256:09e06fc66a7b664bb1e8fbfa56d067874ce6a447612fe08f5cf48243bdbecfae,2807
15+ - rset-1.0.0@sha256:5a66770d08ddf10f7ab3aeddd03bafe5859daa403df939f1332ae30267e74939,1643
16+ - scotty-0.22@sha256:b3c799b3c4896176342062c1140c290ffb9a8d81e6da2ea3e12f7a83cbda78d4,6013
17+ - winery-1.5@sha256:811e149601920f4b3fd356c9b854e33e78691b17d18bb74551cbab5c1bf2a002,2928
18+ - barbies-th-0.1.11@sha256:df9648ae23b2a97f7766fae2ca923b7554b53775925ba15fbcb062cc837e1040,1660
19+ - streamly-bytestring-0.2.2@sha256:dd498a4e416c60ba4271e7e72269ec5123d895dd0dd6fd93dbabc7a7e6103d98,2576
stack.yaml.locknew file+68
@@ -0,0 +1,68 @@
1+# This file was autogenerated by Stack.
2+# You should not edit this file by hand.
3+# For more information, please see the documentation at:
4+# https://docs.haskellstack.org/en/stable/lock_files
5+
6+packages:
7+- completed:
8+ hackage: project-m36-1.1.1@sha256:133af41c8aa1af55aa7a768da3b34f98cfed813247e5d8ca6a0596d87ac699b3,36405
9+ pantry-tree:
10+ sha256: 6f55e1d011abf0d925b99384f296c4317c8206c537954bd9399a5cc24de2aea5
11+ size: 14135
12+ original:
13+ hackage: project-m36-1.1.1
14+- completed:
15+ hackage: curryer-rpc-0.4.0@sha256:a270cbb8f7b29fb580e4a798350bf6d4c42b5b553b27b182589b42be74e9c6d3,2906
16+ pantry-tree:
17+ sha256: b2586f799f73084bcbe6588eda47afb76a9782e5e3279e963bf7349f743eedbb
18+ size: 734
19+ original:
20+ hackage: curryer-rpc-0.4.0@sha256:a270cbb8f7b29fb580e4a798350bf6d4c42b5b553b27b182589b42be74e9c6d3,2906
21+- completed:
22+ hackage: fast-builder-0.1.5.0@sha256:09e06fc66a7b664bb1e8fbfa56d067874ce6a447612fe08f5cf48243bdbecfae,2807
23+ pantry-tree:
24+ sha256: e1d55a68a91fd7afd8fadcb1c28ef518e47feab25bdb3f9a9c8eddc12c1a3639
25+ size: 986
26+ original:
27+ hackage: fast-builder-0.1.5.0@sha256:09e06fc66a7b664bb1e8fbfa56d067874ce6a447612fe08f5cf48243bdbecfae,2807
28+- completed:
29+ hackage: rset-1.0.0@sha256:5a66770d08ddf10f7ab3aeddd03bafe5859daa403df939f1332ae30267e74939,1643
30+ pantry-tree:
31+ sha256: 3bb4cf0b5df0c591934ea0f426479749cab8da61db7d6b3c8cceb9d075b83038
32+ size: 741
33+ original:
34+ hackage: rset-1.0.0@sha256:5a66770d08ddf10f7ab3aeddd03bafe5859daa403df939f1332ae30267e74939,1643
35+- completed:
36+ hackage: scotty-0.22@sha256:b3c799b3c4896176342062c1140c290ffb9a8d81e6da2ea3e12f7a83cbda78d4,6013
37+ pantry-tree:
38+ sha256: ec781405d9d771ad8e0b0d6f350b4c4296104665668fc7263ba36839f674d835
39+ size: 2138
40+ original:
41+ hackage: scotty-0.22@sha256:b3c799b3c4896176342062c1140c290ffb9a8d81e6da2ea3e12f7a83cbda78d4,6013
42+- completed:
43+ hackage: winery-1.5@sha256:811e149601920f4b3fd356c9b854e33e78691b17d18bb74551cbab5c1bf2a002,2928
44+ pantry-tree:
45+ sha256: 096460bf61a8f08d936a3a0c0c12261524010dae0082ad8cc0c61d7beb508f69
46+ size: 1047
47+ original:
48+ hackage: winery-1.5@sha256:811e149601920f4b3fd356c9b854e33e78691b17d18bb74551cbab5c1bf2a002,2928
49+- completed:
50+ hackage: barbies-th-0.1.11@sha256:df9648ae23b2a97f7766fae2ca923b7554b53775925ba15fbcb062cc837e1040,1660
51+ pantry-tree:
52+ sha256: 34c01c9fb405d5e10849a73c82d2a8706156d5ba5120d9f28747b8b92a2e825b
53+ size: 657
54+ original:
55+ hackage: barbies-th-0.1.11@sha256:df9648ae23b2a97f7766fae2ca923b7554b53775925ba15fbcb062cc837e1040,1660
56+- completed:
57+ hackage: streamly-bytestring-0.2.2@sha256:dd498a4e416c60ba4271e7e72269ec5123d895dd0dd6fd93dbabc7a7e6103d98,2576
58+ pantry-tree:
59+ sha256: cec87f3988525238e3b681614e9ba7a4ac2f834bb34959a0a001c758bc653c12
60+ size: 532
61+ original:
62+ hackage: streamly-bytestring-0.2.2@sha256:dd498a4e416c60ba4271e7e72269ec5123d895dd0dd6fd93dbabc7a7e6103d98,2576
63+snapshots:
64+- completed:
65+ sha256: 08bd13ce621b41a8f5e51456b38d5b46d7783ce114a50ab604d6bbab0d002146
66+ size: 720271
67+ url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/22/43.yaml
68+ original: lts-22.43