@@ -403,26 +403,20 @@ type family RecDeepTy (ps :: r) (lts :: [*]) :: * where
403403-- NOTE: changed from original superrecord to not require a 'Sort'
404404combine ::
405405 forall lhs rhs res.
406− ( KnownNat (RecSize lhs),
407− KnownNat (RecSize rhs),
408− KnownNat (RecSize lhs + RecSize rhs),
409− res ~ RecAppend lhs rhs,
410− RecCopy lhs lhs res,
411− RecCopy rhs rhs res
412− ) =>
406+ res ~ RecAppend lhs rhs =>
413407 Rec lhs ->
414408 Rec rhs ->
415409 Rec res
416−combine lts rts =
417− let !(I# size#) =
418− fromIntegral $ natVal' (proxy# :: Proxy# (RecSize lhs + RecSize rhs))
410+combine (MkRec arr0#) (MkRec arr1#) =
411+ let !size0# = sizeofSmallArray# arr0#
412+ !size1# = sizeofSmallArray# arr1#
419413 in runST' $
420414 ST $ \s# ->
421− case newSmallArray# size# (error "No value") s# of
415+ case newSmallArray# (size0# +# size1#) (error "No value") s# of
422416 (# s'#, arr# #) ->
423− case recCopyInto (Proxy :: Proxy lhs) lts (Proxy :: Proxy res) arr# s'# of
417+ case copySmallArray# arr1# 0# arr# 0# size1# s'# of
424418 s''# ->
425− case recCopyInto (Proxy :: Proxy rhs) rts (Proxy :: Proxy res) arr# s''# of
419+ case copySmallArray# arr0# 0# arr# size1# size0# s''# of
426420 s'''# ->
427421 case unsafeFreezeSmallArray# arr# s'''# of
428422 (# s''''#, a# #) -> (# s''''#, MkRec a# #)
@@ -492,13 +486,7 @@ insert (l := v) rts =
492486-- | Alias for 'combine'
493487(++:) ::
494488 forall lhs rhs res.
495− ( KnownNat (RecSize lhs),
496− KnownNat (RecSize rhs),
497− KnownNat (RecSize lhs + RecSize rhs),
498− res ~ RecAppend lhs rhs,
499− RecCopy lhs lhs res,
500− RecCopy rhs rhs res
501− ) =>
489+ res ~ RecAppend lhs rhs =>
502490 Rec lhs ->
503491 Rec rhs ->
504492 Rec res