futhask-base-0.1.0.0: src/Futhask/Array/Tuple.hs
{-# LANGUAGE TypeFamilyDependencies, FlexibleContexts, GADTs, ApplicativeDo #-}
{-|
Tuple arrays
-}
module Futhask.Array.Tuple where
import Futhask.Array.Element
import Futhask.Array.Boxed
import System.IO.Unsafe
data T2Array a0 a1 where
T2Array :: (Element a0, Element a1) => Array a0 -> Array a1 -> T2Array a0 a1
data MT2Array a0 a1 where
MT2Array :: (Element a0, Element a1) => MArray a0 -> MArray a1 -> MT2Array a0 a1
instance (Element a0, Element a1) => Element (a0, a1) where
type Array (a0, a1) = T2Array a0 a1
type MArray (a0, a1) = MT2Array a0 a1
size (T2Array a0 a1) = size a0
msize (MT2Array a0 a1) = msize a0
unsafeRead (T2Array a0 a1) idx = (unsafeRead a0 idx, unsafeRead a1 idx)
unsafePeek (MT2Array a0 a1) idx = do
e0 <- unsafePeek a0 idx
e1 <- unsafePeek a1 idx
pure (e0, e1)
unsafePoke (MT2Array a0 a1) idx (e0, e1) = do
unsafePoke a0 idx e0
unsafePoke a1 idx e1
unsafeThaw (T2Array a0 a1) = do
a0' <- unsafeThaw a0
a1' <- unsafeThaw a1
pure (MT2Array a0' a1')
unsafeFreeze (MT2Array a0 a1) = do
a0' <- unsafeFreeze a0
a1' <- unsafeFreeze a1
pure (T2Array a0' a1')
unsafeSlice (T2Array a0 a1) i s = T2Array (unsafeSlice a0 i s) (unsafeSlice a1 i s)
scratch s = do
a0 <- scratch s
a1 <- scratch s
pure (MT2Array a0 a1)
instance Element (T2Array a0 a1) where
type Array (T2Array a0 a1) = BArray (T2Array a0 a1)
type MArray (T2Array a0 a1) = MBArray (T2Array a0 a1)
size = sizeB
msize = msizeB
unsafeRead = unsafeReadB
unsafePeek = unsafePeekB
unsafePoke = unsafePokeB
unsafeThaw = unsafeThawB
unsafeFreeze = unsafeFreezeB
unsafeSlice = unsafeSliceB
scratch = scratchB
instance (Show a0, Show a1, Element a0, Element a1) => Show (T2Array a0 a1) where
show = show . toList
zip2 :: (Element a0, Element a1) => Array a0 -> Array a1 -> Array (a0, a1)
zip2 a0 a1 = if size a0 == size a1
then T2Array a0 a1
else error "sizes of arguments do not match"
unzip2 :: (Element a0, Element a1) => Array (a0, a1) -> (Array a0, Array a1)
unzip2 (T2Array a0 a1) = (a0, a1)
data T3Array a0 a1 a2 where
T3Array :: (Element a0, Element a1, Element a2) => Array a0 -> Array a1 -> Array a2 -> T3Array a0 a1 a2
data MT3Array a0 a1 a2 where
MT3Array :: (Element a0, Element a1, Element a2) => MArray a0 -> MArray a1 -> MArray a2 -> MT3Array a0 a1 a2
instance (Element a0, Element a1, Element a2) => Element (a0, a1, a2) where
type Array (a0, a1, a2) = T3Array a0 a1 a2
type MArray (a0, a1, a2) = MT3Array a0 a1 a2
size (T3Array a0 a1 a2) = size a0
msize (MT3Array a0 a1 a2) = msize a0
unsafeRead (T3Array a0 a1 a2) idx = (unsafeRead a0 idx, unsafeRead a1 idx, unsafeRead a2 idx)
unsafePeek (MT3Array a0 a1 a2) idx = do
e0 <- unsafePeek a0 idx
e1 <- unsafePeek a1 idx
e2 <- unsafePeek a2 idx
pure (e0, e1, e2)
unsafePoke (MT3Array a0 a1 a2) idx (e0, e1, e2) = do
unsafePoke a0 idx e0
unsafePoke a1 idx e1
unsafePoke a2 idx e2
unsafeThaw (T3Array a0 a1 a2) = do
a0' <- unsafeThaw a0
a1' <- unsafeThaw a1
a2' <- unsafeThaw a2
pure (MT3Array a0' a1' a2')
unsafeFreeze (MT3Array a0 a1 a2) = do
a0' <- unsafeFreeze a0
a1' <- unsafeFreeze a1
a2' <- unsafeFreeze a2
pure (T3Array a0' a1' a2')
unsafeSlice (T3Array a0 a1 a2) i s = T3Array (unsafeSlice a0 i s) (unsafeSlice a1 i s) (unsafeSlice a2 i s)
scratch s = do
a0 <- scratch s
a1 <- scratch s
a2 <- scratch s
pure (MT3Array a0 a1 a2)
instance Element (T3Array a0 a1 a2) where
type Array (T3Array a0 a1 a2) = BArray (T3Array a0 a1 a2)
type MArray (T3Array a0 a1 a2) = MBArray (T3Array a0 a1 a2)
size = sizeB
msize = msizeB
unsafeRead = unsafeReadB
unsafePeek = unsafePeekB
unsafePoke = unsafePokeB
unsafeThaw = unsafeThawB
unsafeFreeze = unsafeFreezeB
unsafeSlice = unsafeSliceB
scratch = scratchB
instance (Show a0, Show a1, Show a2, Element a0, Element a1, Element a2) => Show (T3Array a0 a1 a2) where
show = show . toList
zip3 :: (Element a0, Element a1, Element a2) => Array a0 -> Array a1 -> Array a2 -> Array (a0, a1, a2)
zip3 a0 a1 a2 = if size a0 == size a1 && size a1 == size a2
then T3Array a0 a1 a2
else error "sizes of arguments do not match"
unzip3 :: (Element a0, Element a1, Element a2) => Array (a0, a1, a2) -> (Array a0, Array a1, Array a2)
unzip3 (T3Array a0 a1 a2) = (a0, a1, a2)
data T4Array a0 a1 a2 a3 where
T4Array :: (Element a0, Element a1, Element a2, Element a3) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> T4Array a0 a1 a2 a3
data MT4Array a0 a1 a2 a3 where
MT4Array :: (Element a0, Element a1, Element a2, Element a3) => MArray a0 -> MArray a1 -> MArray a2 -> MArray a3 -> MT4Array a0 a1 a2 a3
instance (Element a0, Element a1, Element a2, Element a3) => Element (a0, a1, a2, a3) where
type Array (a0, a1, a2, a3) = T4Array a0 a1 a2 a3
type MArray (a0, a1, a2, a3) = MT4Array a0 a1 a2 a3
size (T4Array a0 a1 a2 a3) = size a0
msize (MT4Array a0 a1 a2 a3) = msize a0
unsafeRead (T4Array a0 a1 a2 a3) idx = (unsafeRead a0 idx, unsafeRead a1 idx, unsafeRead a2 idx, unsafeRead a3 idx)
unsafePeek (MT4Array a0 a1 a2 a3) idx = do
e0 <- unsafePeek a0 idx
e1 <- unsafePeek a1 idx
e2 <- unsafePeek a2 idx
e3 <- unsafePeek a3 idx
pure (e0, e1, e2, e3)
unsafePoke (MT4Array a0 a1 a2 a3) idx (e0, e1, e2, e3) = do
unsafePoke a0 idx e0
unsafePoke a1 idx e1
unsafePoke a2 idx e2
unsafePoke a3 idx e3
unsafeThaw (T4Array a0 a1 a2 a3) = do
a0' <- unsafeThaw a0
a1' <- unsafeThaw a1
a2' <- unsafeThaw a2
a3' <- unsafeThaw a3
pure (MT4Array a0' a1' a2' a3')
unsafeFreeze (MT4Array a0 a1 a2 a3) = do
a0' <- unsafeFreeze a0
a1' <- unsafeFreeze a1
a2' <- unsafeFreeze a2
a3' <- unsafeFreeze a3
pure (T4Array a0' a1' a2' a3')
unsafeSlice (T4Array a0 a1 a2 a3) i s = T4Array (unsafeSlice a0 i s) (unsafeSlice a1 i s) (unsafeSlice a2 i s) (unsafeSlice a3 i s)
scratch s = do
a0 <- scratch s
a1 <- scratch s
a2 <- scratch s
a3 <- scratch s
pure (MT4Array a0 a1 a2 a3)
instance Element (T4Array a0 a1 a2 a3) where
type Array (T4Array a0 a1 a2 a3) = BArray (T4Array a0 a1 a2 a3)
type MArray (T4Array a0 a1 a2 a3) = MBArray (T4Array a0 a1 a2 a3)
size = sizeB
msize = msizeB
unsafeRead = unsafeReadB
unsafePeek = unsafePeekB
unsafePoke = unsafePokeB
unsafeThaw = unsafeThawB
unsafeFreeze = unsafeFreezeB
unsafeSlice = unsafeSliceB
scratch = scratchB
instance (Show a0, Show a1, Show a2, Show a3, Element a0, Element a1, Element a2, Element a3) => Show (T4Array a0 a1 a2 a3) where
show = show . toList
zip4 :: (Element a0, Element a1, Element a2, Element a3) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array (a0, a1, a2, a3)
zip4 a0 a1 a2 a3 = if size a0 == size a1 && size a1 == size a2 && size a2 == size a3
then T4Array a0 a1 a2 a3
else error "sizes of arguments do not match"
unzip4 :: (Element a0, Element a1, Element a2, Element a3) => Array (a0, a1, a2, a3) -> (Array a0, Array a1, Array a2, Array a3)
unzip4 (T4Array a0 a1 a2 a3) = (a0, a1, a2, a3)
data T5Array a0 a1 a2 a3 a4 where
T5Array :: (Element a0, Element a1, Element a2, Element a3, Element a4) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> T5Array a0 a1 a2 a3 a4
data MT5Array a0 a1 a2 a3 a4 where
MT5Array :: (Element a0, Element a1, Element a2, Element a3, Element a4) => MArray a0 -> MArray a1 -> MArray a2 -> MArray a3 -> MArray a4 -> MT5Array a0 a1 a2 a3 a4
instance (Element a0, Element a1, Element a2, Element a3, Element a4) => Element (a0, a1, a2, a3, a4) where
type Array (a0, a1, a2, a3, a4) = T5Array a0 a1 a2 a3 a4
type MArray (a0, a1, a2, a3, a4) = MT5Array a0 a1 a2 a3 a4
size (T5Array a0 a1 a2 a3 a4) = size a0
msize (MT5Array a0 a1 a2 a3 a4) = msize a0
unsafeRead (T5Array a0 a1 a2 a3 a4) idx = (unsafeRead a0 idx, unsafeRead a1 idx, unsafeRead a2 idx, unsafeRead a3 idx, unsafeRead a4 idx)
unsafePeek (MT5Array a0 a1 a2 a3 a4) idx = do
e0 <- unsafePeek a0 idx
e1 <- unsafePeek a1 idx
e2 <- unsafePeek a2 idx
e3 <- unsafePeek a3 idx
e4 <- unsafePeek a4 idx
pure (e0, e1, e2, e3, e4)
unsafePoke (MT5Array a0 a1 a2 a3 a4) idx (e0, e1, e2, e3, e4) = do
unsafePoke a0 idx e0
unsafePoke a1 idx e1
unsafePoke a2 idx e2
unsafePoke a3 idx e3
unsafePoke a4 idx e4
unsafeThaw (T5Array a0 a1 a2 a3 a4) = do
a0' <- unsafeThaw a0
a1' <- unsafeThaw a1
a2' <- unsafeThaw a2
a3' <- unsafeThaw a3
a4' <- unsafeThaw a4
pure (MT5Array a0' a1' a2' a3' a4')
unsafeFreeze (MT5Array a0 a1 a2 a3 a4) = do
a0' <- unsafeFreeze a0
a1' <- unsafeFreeze a1
a2' <- unsafeFreeze a2
a3' <- unsafeFreeze a3
a4' <- unsafeFreeze a4
pure (T5Array a0' a1' a2' a3' a4')
unsafeSlice (T5Array a0 a1 a2 a3 a4) i s = T5Array (unsafeSlice a0 i s) (unsafeSlice a1 i s) (unsafeSlice a2 i s) (unsafeSlice a3 i s) (unsafeSlice a4 i s)
scratch s = do
a0 <- scratch s
a1 <- scratch s
a2 <- scratch s
a3 <- scratch s
a4 <- scratch s
pure (MT5Array a0 a1 a2 a3 a4)
instance Element (T5Array a0 a1 a2 a3 a4) where
type Array (T5Array a0 a1 a2 a3 a4) = BArray (T5Array a0 a1 a2 a3 a4)
type MArray (T5Array a0 a1 a2 a3 a4) = MBArray (T5Array a0 a1 a2 a3 a4)
size = sizeB
msize = msizeB
unsafeRead = unsafeReadB
unsafePeek = unsafePeekB
unsafePoke = unsafePokeB
unsafeThaw = unsafeThawB
unsafeFreeze = unsafeFreezeB
unsafeSlice = unsafeSliceB
scratch = scratchB
instance (Show a0, Show a1, Show a2, Show a3, Show a4, Element a0, Element a1, Element a2, Element a3, Element a4) => Show (T5Array a0 a1 a2 a3 a4) where
show = show . toList
zip5 :: (Element a0, Element a1, Element a2, Element a3, Element a4) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array (a0, a1, a2, a3, a4)
zip5 a0 a1 a2 a3 a4 = if size a0 == size a1 && size a1 == size a2 && size a2 == size a3 && size a3 == size a4
then T5Array a0 a1 a2 a3 a4
else error "sizes of arguments do not match"
unzip5 :: (Element a0, Element a1, Element a2, Element a3, Element a4) => Array (a0, a1, a2, a3, a4) -> (Array a0, Array a1, Array a2, Array a3, Array a4)
unzip5 (T5Array a0 a1 a2 a3 a4) = (a0, a1, a2, a3, a4)
data T6Array a0 a1 a2 a3 a4 a5 where
T6Array :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array a5 -> T6Array a0 a1 a2 a3 a4 a5
data MT6Array a0 a1 a2 a3 a4 a5 where
MT6Array :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5) => MArray a0 -> MArray a1 -> MArray a2 -> MArray a3 -> MArray a4 -> MArray a5 -> MT6Array a0 a1 a2 a3 a4 a5
instance (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5) => Element (a0, a1, a2, a3, a4, a5) where
type Array (a0, a1, a2, a3, a4, a5) = T6Array a0 a1 a2 a3 a4 a5
type MArray (a0, a1, a2, a3, a4, a5) = MT6Array a0 a1 a2 a3 a4 a5
size (T6Array a0 a1 a2 a3 a4 a5) = size a0
msize (MT6Array a0 a1 a2 a3 a4 a5) = msize a0
unsafeRead (T6Array a0 a1 a2 a3 a4 a5) idx = (unsafeRead a0 idx, unsafeRead a1 idx, unsafeRead a2 idx, unsafeRead a3 idx, unsafeRead a4 idx, unsafeRead a5 idx)
unsafePeek (MT6Array a0 a1 a2 a3 a4 a5) idx = do
e0 <- unsafePeek a0 idx
e1 <- unsafePeek a1 idx
e2 <- unsafePeek a2 idx
e3 <- unsafePeek a3 idx
e4 <- unsafePeek a4 idx
e5 <- unsafePeek a5 idx
pure (e0, e1, e2, e3, e4, e5)
unsafePoke (MT6Array a0 a1 a2 a3 a4 a5) idx (e0, e1, e2, e3, e4, e5) = do
unsafePoke a0 idx e0
unsafePoke a1 idx e1
unsafePoke a2 idx e2
unsafePoke a3 idx e3
unsafePoke a4 idx e4
unsafePoke a5 idx e5
unsafeThaw (T6Array a0 a1 a2 a3 a4 a5) = do
a0' <- unsafeThaw a0
a1' <- unsafeThaw a1
a2' <- unsafeThaw a2
a3' <- unsafeThaw a3
a4' <- unsafeThaw a4
a5' <- unsafeThaw a5
pure (MT6Array a0' a1' a2' a3' a4' a5')
unsafeFreeze (MT6Array a0 a1 a2 a3 a4 a5) = do
a0' <- unsafeFreeze a0
a1' <- unsafeFreeze a1
a2' <- unsafeFreeze a2
a3' <- unsafeFreeze a3
a4' <- unsafeFreeze a4
a5' <- unsafeFreeze a5
pure (T6Array a0' a1' a2' a3' a4' a5')
unsafeSlice (T6Array a0 a1 a2 a3 a4 a5) i s = T6Array (unsafeSlice a0 i s) (unsafeSlice a1 i s) (unsafeSlice a2 i s) (unsafeSlice a3 i s) (unsafeSlice a4 i s) (unsafeSlice a5 i s)
scratch s = do
a0 <- scratch s
a1 <- scratch s
a2 <- scratch s
a3 <- scratch s
a4 <- scratch s
a5 <- scratch s
pure (MT6Array a0 a1 a2 a3 a4 a5)
instance Element (T6Array a0 a1 a2 a3 a4 a5) where
type Array (T6Array a0 a1 a2 a3 a4 a5) = BArray (T6Array a0 a1 a2 a3 a4 a5)
type MArray (T6Array a0 a1 a2 a3 a4 a5) = MBArray (T6Array a0 a1 a2 a3 a4 a5)
size = sizeB
msize = msizeB
unsafeRead = unsafeReadB
unsafePeek = unsafePeekB
unsafePoke = unsafePokeB
unsafeThaw = unsafeThawB
unsafeFreeze = unsafeFreezeB
unsafeSlice = unsafeSliceB
scratch = scratchB
instance (Show a0, Show a1, Show a2, Show a3, Show a4, Show a5, Element a0, Element a1, Element a2, Element a3, Element a4, Element a5) => Show (T6Array a0 a1 a2 a3 a4 a5) where
show = show . toList
zip6 :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array a5 -> Array (a0, a1, a2, a3, a4, a5)
zip6 a0 a1 a2 a3 a4 a5 = if size a0 == size a1 && size a1 == size a2 && size a2 == size a3 && size a3 == size a4 && size a4 == size a5
then T6Array a0 a1 a2 a3 a4 a5
else error "sizes of arguments do not match"
unzip6 :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5) => Array (a0, a1, a2, a3, a4, a5) -> (Array a0, Array a1, Array a2, Array a3, Array a4, Array a5)
unzip6 (T6Array a0 a1 a2 a3 a4 a5) = (a0, a1, a2, a3, a4, a5)
data T7Array a0 a1 a2 a3 a4 a5 a6 where
T7Array :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array a5 -> Array a6 -> T7Array a0 a1 a2 a3 a4 a5 a6
data MT7Array a0 a1 a2 a3 a4 a5 a6 where
MT7Array :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6) => MArray a0 -> MArray a1 -> MArray a2 -> MArray a3 -> MArray a4 -> MArray a5 -> MArray a6 -> MT7Array a0 a1 a2 a3 a4 a5 a6
instance (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6) => Element (a0, a1, a2, a3, a4, a5, a6) where
type Array (a0, a1, a2, a3, a4, a5, a6) = T7Array a0 a1 a2 a3 a4 a5 a6
type MArray (a0, a1, a2, a3, a4, a5, a6) = MT7Array a0 a1 a2 a3 a4 a5 a6
size (T7Array a0 a1 a2 a3 a4 a5 a6) = size a0
msize (MT7Array a0 a1 a2 a3 a4 a5 a6) = msize a0
unsafeRead (T7Array a0 a1 a2 a3 a4 a5 a6) idx = (unsafeRead a0 idx, unsafeRead a1 idx, unsafeRead a2 idx, unsafeRead a3 idx, unsafeRead a4 idx, unsafeRead a5 idx, unsafeRead a6 idx)
unsafePeek (MT7Array a0 a1 a2 a3 a4 a5 a6) idx = do
e0 <- unsafePeek a0 idx
e1 <- unsafePeek a1 idx
e2 <- unsafePeek a2 idx
e3 <- unsafePeek a3 idx
e4 <- unsafePeek a4 idx
e5 <- unsafePeek a5 idx
e6 <- unsafePeek a6 idx
pure (e0, e1, e2, e3, e4, e5, e6)
unsafePoke (MT7Array a0 a1 a2 a3 a4 a5 a6) idx (e0, e1, e2, e3, e4, e5, e6) = do
unsafePoke a0 idx e0
unsafePoke a1 idx e1
unsafePoke a2 idx e2
unsafePoke a3 idx e3
unsafePoke a4 idx e4
unsafePoke a5 idx e5
unsafePoke a6 idx e6
unsafeThaw (T7Array a0 a1 a2 a3 a4 a5 a6) = do
a0' <- unsafeThaw a0
a1' <- unsafeThaw a1
a2' <- unsafeThaw a2
a3' <- unsafeThaw a3
a4' <- unsafeThaw a4
a5' <- unsafeThaw a5
a6' <- unsafeThaw a6
pure (MT7Array a0' a1' a2' a3' a4' a5' a6')
unsafeFreeze (MT7Array a0 a1 a2 a3 a4 a5 a6) = do
a0' <- unsafeFreeze a0
a1' <- unsafeFreeze a1
a2' <- unsafeFreeze a2
a3' <- unsafeFreeze a3
a4' <- unsafeFreeze a4
a5' <- unsafeFreeze a5
a6' <- unsafeFreeze a6
pure (T7Array a0' a1' a2' a3' a4' a5' a6')
unsafeSlice (T7Array a0 a1 a2 a3 a4 a5 a6) i s = T7Array (unsafeSlice a0 i s) (unsafeSlice a1 i s) (unsafeSlice a2 i s) (unsafeSlice a3 i s) (unsafeSlice a4 i s) (unsafeSlice a5 i s) (unsafeSlice a6 i s)
scratch s = do
a0 <- scratch s
a1 <- scratch s
a2 <- scratch s
a3 <- scratch s
a4 <- scratch s
a5 <- scratch s
a6 <- scratch s
pure (MT7Array a0 a1 a2 a3 a4 a5 a6)
instance Element (T7Array a0 a1 a2 a3 a4 a5 a6) where
type Array (T7Array a0 a1 a2 a3 a4 a5 a6) = BArray (T7Array a0 a1 a2 a3 a4 a5 a6)
type MArray (T7Array a0 a1 a2 a3 a4 a5 a6) = MBArray (T7Array a0 a1 a2 a3 a4 a5 a6)
size = sizeB
msize = msizeB
unsafeRead = unsafeReadB
unsafePeek = unsafePeekB
unsafePoke = unsafePokeB
unsafeThaw = unsafeThawB
unsafeFreeze = unsafeFreezeB
unsafeSlice = unsafeSliceB
scratch = scratchB
instance (Show a0, Show a1, Show a2, Show a3, Show a4, Show a5, Show a6, Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6) => Show (T7Array a0 a1 a2 a3 a4 a5 a6) where
show = show . toList
zip7 :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array a5 -> Array a6 -> Array (a0, a1, a2, a3, a4, a5, a6)
zip7 a0 a1 a2 a3 a4 a5 a6 = if size a0 == size a1 && size a1 == size a2 && size a2 == size a3 && size a3 == size a4 && size a4 == size a5 && size a5 == size a6
then T7Array a0 a1 a2 a3 a4 a5 a6
else error "sizes of arguments do not match"
unzip7 :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6) => Array (a0, a1, a2, a3, a4, a5, a6) -> (Array a0, Array a1, Array a2, Array a3, Array a4, Array a5, Array a6)
unzip7 (T7Array a0 a1 a2 a3 a4 a5 a6) = (a0, a1, a2, a3, a4, a5, a6)
data T8Array a0 a1 a2 a3 a4 a5 a6 a7 where
T8Array :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array a5 -> Array a6 -> Array a7 -> T8Array a0 a1 a2 a3 a4 a5 a6 a7
data MT8Array a0 a1 a2 a3 a4 a5 a6 a7 where
MT8Array :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7) => MArray a0 -> MArray a1 -> MArray a2 -> MArray a3 -> MArray a4 -> MArray a5 -> MArray a6 -> MArray a7 -> MT8Array a0 a1 a2 a3 a4 a5 a6 a7
instance (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7) => Element (a0, a1, a2, a3, a4, a5, a6, a7) where
type Array (a0, a1, a2, a3, a4, a5, a6, a7) = T8Array a0 a1 a2 a3 a4 a5 a6 a7
type MArray (a0, a1, a2, a3, a4, a5, a6, a7) = MT8Array a0 a1 a2 a3 a4 a5 a6 a7
size (T8Array a0 a1 a2 a3 a4 a5 a6 a7) = size a0
msize (MT8Array a0 a1 a2 a3 a4 a5 a6 a7) = msize a0
unsafeRead (T8Array a0 a1 a2 a3 a4 a5 a6 a7) idx = (unsafeRead a0 idx, unsafeRead a1 idx, unsafeRead a2 idx, unsafeRead a3 idx, unsafeRead a4 idx, unsafeRead a5 idx, unsafeRead a6 idx, unsafeRead a7 idx)
unsafePeek (MT8Array a0 a1 a2 a3 a4 a5 a6 a7) idx = do
e0 <- unsafePeek a0 idx
e1 <- unsafePeek a1 idx
e2 <- unsafePeek a2 idx
e3 <- unsafePeek a3 idx
e4 <- unsafePeek a4 idx
e5 <- unsafePeek a5 idx
e6 <- unsafePeek a6 idx
e7 <- unsafePeek a7 idx
pure (e0, e1, e2, e3, e4, e5, e6, e7)
unsafePoke (MT8Array a0 a1 a2 a3 a4 a5 a6 a7) idx (e0, e1, e2, e3, e4, e5, e6, e7) = do
unsafePoke a0 idx e0
unsafePoke a1 idx e1
unsafePoke a2 idx e2
unsafePoke a3 idx e3
unsafePoke a4 idx e4
unsafePoke a5 idx e5
unsafePoke a6 idx e6
unsafePoke a7 idx e7
unsafeThaw (T8Array a0 a1 a2 a3 a4 a5 a6 a7) = do
a0' <- unsafeThaw a0
a1' <- unsafeThaw a1
a2' <- unsafeThaw a2
a3' <- unsafeThaw a3
a4' <- unsafeThaw a4
a5' <- unsafeThaw a5
a6' <- unsafeThaw a6
a7' <- unsafeThaw a7
pure (MT8Array a0' a1' a2' a3' a4' a5' a6' a7')
unsafeFreeze (MT8Array a0 a1 a2 a3 a4 a5 a6 a7) = do
a0' <- unsafeFreeze a0
a1' <- unsafeFreeze a1
a2' <- unsafeFreeze a2
a3' <- unsafeFreeze a3
a4' <- unsafeFreeze a4
a5' <- unsafeFreeze a5
a6' <- unsafeFreeze a6
a7' <- unsafeFreeze a7
pure (T8Array a0' a1' a2' a3' a4' a5' a6' a7')
unsafeSlice (T8Array a0 a1 a2 a3 a4 a5 a6 a7) i s = T8Array (unsafeSlice a0 i s) (unsafeSlice a1 i s) (unsafeSlice a2 i s) (unsafeSlice a3 i s) (unsafeSlice a4 i s) (unsafeSlice a5 i s) (unsafeSlice a6 i s) (unsafeSlice a7 i s)
scratch s = do
a0 <- scratch s
a1 <- scratch s
a2 <- scratch s
a3 <- scratch s
a4 <- scratch s
a5 <- scratch s
a6 <- scratch s
a7 <- scratch s
pure (MT8Array a0 a1 a2 a3 a4 a5 a6 a7)
instance Element (T8Array a0 a1 a2 a3 a4 a5 a6 a7) where
type Array (T8Array a0 a1 a2 a3 a4 a5 a6 a7) = BArray (T8Array a0 a1 a2 a3 a4 a5 a6 a7)
type MArray (T8Array a0 a1 a2 a3 a4 a5 a6 a7) = MBArray (T8Array a0 a1 a2 a3 a4 a5 a6 a7)
size = sizeB
msize = msizeB
unsafeRead = unsafeReadB
unsafePeek = unsafePeekB
unsafePoke = unsafePokeB
unsafeThaw = unsafeThawB
unsafeFreeze = unsafeFreezeB
unsafeSlice = unsafeSliceB
scratch = scratchB
instance (Show a0, Show a1, Show a2, Show a3, Show a4, Show a5, Show a6, Show a7, Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7) => Show (T8Array a0 a1 a2 a3 a4 a5 a6 a7) where
show = show . toList
zip8 :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array a5 -> Array a6 -> Array a7 -> Array (a0, a1, a2, a3, a4, a5, a6, a7)
zip8 a0 a1 a2 a3 a4 a5 a6 a7 = if size a0 == size a1 && size a1 == size a2 && size a2 == size a3 && size a3 == size a4 && size a4 == size a5 && size a5 == size a6 && size a6 == size a7
then T8Array a0 a1 a2 a3 a4 a5 a6 a7
else error "sizes of arguments do not match"
unzip8 :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7) => Array (a0, a1, a2, a3, a4, a5, a6, a7) -> (Array a0, Array a1, Array a2, Array a3, Array a4, Array a5, Array a6, Array a7)
unzip8 (T8Array a0 a1 a2 a3 a4 a5 a6 a7) = (a0, a1, a2, a3, a4, a5, a6, a7)
data T9Array a0 a1 a2 a3 a4 a5 a6 a7 a8 where
T9Array :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array a5 -> Array a6 -> Array a7 -> Array a8 -> T9Array a0 a1 a2 a3 a4 a5 a6 a7 a8
data MT9Array a0 a1 a2 a3 a4 a5 a6 a7 a8 where
MT9Array :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8) => MArray a0 -> MArray a1 -> MArray a2 -> MArray a3 -> MArray a4 -> MArray a5 -> MArray a6 -> MArray a7 -> MArray a8 -> MT9Array a0 a1 a2 a3 a4 a5 a6 a7 a8
instance (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8) => Element (a0, a1, a2, a3, a4, a5, a6, a7, a8) where
type Array (a0, a1, a2, a3, a4, a5, a6, a7, a8) = T9Array a0 a1 a2 a3 a4 a5 a6 a7 a8
type MArray (a0, a1, a2, a3, a4, a5, a6, a7, a8) = MT9Array a0 a1 a2 a3 a4 a5 a6 a7 a8
size (T9Array a0 a1 a2 a3 a4 a5 a6 a7 a8) = size a0
msize (MT9Array a0 a1 a2 a3 a4 a5 a6 a7 a8) = msize a0
unsafeRead (T9Array a0 a1 a2 a3 a4 a5 a6 a7 a8) idx = (unsafeRead a0 idx, unsafeRead a1 idx, unsafeRead a2 idx, unsafeRead a3 idx, unsafeRead a4 idx, unsafeRead a5 idx, unsafeRead a6 idx, unsafeRead a7 idx, unsafeRead a8 idx)
unsafePeek (MT9Array a0 a1 a2 a3 a4 a5 a6 a7 a8) idx = do
e0 <- unsafePeek a0 idx
e1 <- unsafePeek a1 idx
e2 <- unsafePeek a2 idx
e3 <- unsafePeek a3 idx
e4 <- unsafePeek a4 idx
e5 <- unsafePeek a5 idx
e6 <- unsafePeek a6 idx
e7 <- unsafePeek a7 idx
e8 <- unsafePeek a8 idx
pure (e0, e1, e2, e3, e4, e5, e6, e7, e8)
unsafePoke (MT9Array a0 a1 a2 a3 a4 a5 a6 a7 a8) idx (e0, e1, e2, e3, e4, e5, e6, e7, e8) = do
unsafePoke a0 idx e0
unsafePoke a1 idx e1
unsafePoke a2 idx e2
unsafePoke a3 idx e3
unsafePoke a4 idx e4
unsafePoke a5 idx e5
unsafePoke a6 idx e6
unsafePoke a7 idx e7
unsafePoke a8 idx e8
unsafeThaw (T9Array a0 a1 a2 a3 a4 a5 a6 a7 a8) = do
a0' <- unsafeThaw a0
a1' <- unsafeThaw a1
a2' <- unsafeThaw a2
a3' <- unsafeThaw a3
a4' <- unsafeThaw a4
a5' <- unsafeThaw a5
a6' <- unsafeThaw a6
a7' <- unsafeThaw a7
a8' <- unsafeThaw a8
pure (MT9Array a0' a1' a2' a3' a4' a5' a6' a7' a8')
unsafeFreeze (MT9Array a0 a1 a2 a3 a4 a5 a6 a7 a8) = do
a0' <- unsafeFreeze a0
a1' <- unsafeFreeze a1
a2' <- unsafeFreeze a2
a3' <- unsafeFreeze a3
a4' <- unsafeFreeze a4
a5' <- unsafeFreeze a5
a6' <- unsafeFreeze a6
a7' <- unsafeFreeze a7
a8' <- unsafeFreeze a8
pure (T9Array a0' a1' a2' a3' a4' a5' a6' a7' a8')
unsafeSlice (T9Array a0 a1 a2 a3 a4 a5 a6 a7 a8) i s = T9Array (unsafeSlice a0 i s) (unsafeSlice a1 i s) (unsafeSlice a2 i s) (unsafeSlice a3 i s) (unsafeSlice a4 i s) (unsafeSlice a5 i s) (unsafeSlice a6 i s) (unsafeSlice a7 i s) (unsafeSlice a8 i s)
scratch s = do
a0 <- scratch s
a1 <- scratch s
a2 <- scratch s
a3 <- scratch s
a4 <- scratch s
a5 <- scratch s
a6 <- scratch s
a7 <- scratch s
a8 <- scratch s
pure (MT9Array a0 a1 a2 a3 a4 a5 a6 a7 a8)
instance Element (T9Array a0 a1 a2 a3 a4 a5 a6 a7 a8) where
type Array (T9Array a0 a1 a2 a3 a4 a5 a6 a7 a8) = BArray (T9Array a0 a1 a2 a3 a4 a5 a6 a7 a8)
type MArray (T9Array a0 a1 a2 a3 a4 a5 a6 a7 a8) = MBArray (T9Array a0 a1 a2 a3 a4 a5 a6 a7 a8)
size = sizeB
msize = msizeB
unsafeRead = unsafeReadB
unsafePeek = unsafePeekB
unsafePoke = unsafePokeB
unsafeThaw = unsafeThawB
unsafeFreeze = unsafeFreezeB
unsafeSlice = unsafeSliceB
scratch = scratchB
instance (Show a0, Show a1, Show a2, Show a3, Show a4, Show a5, Show a6, Show a7, Show a8, Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8) => Show (T9Array a0 a1 a2 a3 a4 a5 a6 a7 a8) where
show = show . toList
zip9 :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array a5 -> Array a6 -> Array a7 -> Array a8 -> Array (a0, a1, a2, a3, a4, a5, a6, a7, a8)
zip9 a0 a1 a2 a3 a4 a5 a6 a7 a8 = if size a0 == size a1 && size a1 == size a2 && size a2 == size a3 && size a3 == size a4 && size a4 == size a5 && size a5 == size a6 && size a6 == size a7 && size a7 == size a8
then T9Array a0 a1 a2 a3 a4 a5 a6 a7 a8
else error "sizes of arguments do not match"
unzip9 :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8) => Array (a0, a1, a2, a3, a4, a5, a6, a7, a8) -> (Array a0, Array a1, Array a2, Array a3, Array a4, Array a5, Array a6, Array a7, Array a8)
unzip9 (T9Array a0 a1 a2 a3 a4 a5 a6 a7 a8) = (a0, a1, a2, a3, a4, a5, a6, a7, a8)
data T10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 where
T10Array :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array a5 -> Array a6 -> Array a7 -> Array a8 -> Array a9 -> T10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9
data MT10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 where
MT10Array :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9) => MArray a0 -> MArray a1 -> MArray a2 -> MArray a3 -> MArray a4 -> MArray a5 -> MArray a6 -> MArray a7 -> MArray a8 -> MArray a9 -> MT10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9
instance (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9) => Element (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) where
type Array (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) = T10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9
type MArray (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) = MT10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9
size (T10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9) = size a0
msize (MT10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9) = msize a0
unsafeRead (T10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9) idx = (unsafeRead a0 idx, unsafeRead a1 idx, unsafeRead a2 idx, unsafeRead a3 idx, unsafeRead a4 idx, unsafeRead a5 idx, unsafeRead a6 idx, unsafeRead a7 idx, unsafeRead a8 idx, unsafeRead a9 idx)
unsafePeek (MT10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9) idx = do
e0 <- unsafePeek a0 idx
e1 <- unsafePeek a1 idx
e2 <- unsafePeek a2 idx
e3 <- unsafePeek a3 idx
e4 <- unsafePeek a4 idx
e5 <- unsafePeek a5 idx
e6 <- unsafePeek a6 idx
e7 <- unsafePeek a7 idx
e8 <- unsafePeek a8 idx
e9 <- unsafePeek a9 idx
pure (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9)
unsafePoke (MT10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9) idx (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9) = do
unsafePoke a0 idx e0
unsafePoke a1 idx e1
unsafePoke a2 idx e2
unsafePoke a3 idx e3
unsafePoke a4 idx e4
unsafePoke a5 idx e5
unsafePoke a6 idx e6
unsafePoke a7 idx e7
unsafePoke a8 idx e8
unsafePoke a9 idx e9
unsafeThaw (T10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9) = do
a0' <- unsafeThaw a0
a1' <- unsafeThaw a1
a2' <- unsafeThaw a2
a3' <- unsafeThaw a3
a4' <- unsafeThaw a4
a5' <- unsafeThaw a5
a6' <- unsafeThaw a6
a7' <- unsafeThaw a7
a8' <- unsafeThaw a8
a9' <- unsafeThaw a9
pure (MT10Array a0' a1' a2' a3' a4' a5' a6' a7' a8' a9')
unsafeFreeze (MT10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9) = do
a0' <- unsafeFreeze a0
a1' <- unsafeFreeze a1
a2' <- unsafeFreeze a2
a3' <- unsafeFreeze a3
a4' <- unsafeFreeze a4
a5' <- unsafeFreeze a5
a6' <- unsafeFreeze a6
a7' <- unsafeFreeze a7
a8' <- unsafeFreeze a8
a9' <- unsafeFreeze a9
pure (T10Array a0' a1' a2' a3' a4' a5' a6' a7' a8' a9')
unsafeSlice (T10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9) i s = T10Array (unsafeSlice a0 i s) (unsafeSlice a1 i s) (unsafeSlice a2 i s) (unsafeSlice a3 i s) (unsafeSlice a4 i s) (unsafeSlice a5 i s) (unsafeSlice a6 i s) (unsafeSlice a7 i s) (unsafeSlice a8 i s) (unsafeSlice a9 i s)
scratch s = do
a0 <- scratch s
a1 <- scratch s
a2 <- scratch s
a3 <- scratch s
a4 <- scratch s
a5 <- scratch s
a6 <- scratch s
a7 <- scratch s
a8 <- scratch s
a9 <- scratch s
pure (MT10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9)
instance Element (T10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9) where
type Array (T10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9) = BArray (T10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9)
type MArray (T10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9) = MBArray (T10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9)
size = sizeB
msize = msizeB
unsafeRead = unsafeReadB
unsafePeek = unsafePeekB
unsafePoke = unsafePokeB
unsafeThaw = unsafeThawB
unsafeFreeze = unsafeFreezeB
unsafeSlice = unsafeSliceB
scratch = scratchB
instance (Show a0, Show a1, Show a2, Show a3, Show a4, Show a5, Show a6, Show a7, Show a8, Show a9, Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9) => Show (T10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9) where
show = show . toList
zip10 :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array a5 -> Array a6 -> Array a7 -> Array a8 -> Array a9 -> Array (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)
zip10 a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 = if size a0 == size a1 && size a1 == size a2 && size a2 == size a3 && size a3 == size a4 && size a4 == size a5 && size a5 == size a6 && size a6 == size a7 && size a7 == size a8 && size a8 == size a9
then T10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9
else error "sizes of arguments do not match"
unzip10 :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9) => Array (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) -> (Array a0, Array a1, Array a2, Array a3, Array a4, Array a5, Array a6, Array a7, Array a8, Array a9)
unzip10 (T10Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9) = (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)
data T11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 where
T11Array :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array a5 -> Array a6 -> Array a7 -> Array a8 -> Array a9 -> Array a10 -> T11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
data MT11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 where
MT11Array :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10) => MArray a0 -> MArray a1 -> MArray a2 -> MArray a3 -> MArray a4 -> MArray a5 -> MArray a6 -> MArray a7 -> MArray a8 -> MArray a9 -> MArray a10 -> MT11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
instance (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10) => Element (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) where
type Array (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) = T11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
type MArray (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) = MT11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
size (T11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10) = size a0
msize (MT11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10) = msize a0
unsafeRead (T11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10) idx = (unsafeRead a0 idx, unsafeRead a1 idx, unsafeRead a2 idx, unsafeRead a3 idx, unsafeRead a4 idx, unsafeRead a5 idx, unsafeRead a6 idx, unsafeRead a7 idx, unsafeRead a8 idx, unsafeRead a9 idx, unsafeRead a10 idx)
unsafePeek (MT11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10) idx = do
e0 <- unsafePeek a0 idx
e1 <- unsafePeek a1 idx
e2 <- unsafePeek a2 idx
e3 <- unsafePeek a3 idx
e4 <- unsafePeek a4 idx
e5 <- unsafePeek a5 idx
e6 <- unsafePeek a6 idx
e7 <- unsafePeek a7 idx
e8 <- unsafePeek a8 idx
e9 <- unsafePeek a9 idx
e10 <- unsafePeek a10 idx
pure (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10)
unsafePoke (MT11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10) idx (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) = do
unsafePoke a0 idx e0
unsafePoke a1 idx e1
unsafePoke a2 idx e2
unsafePoke a3 idx e3
unsafePoke a4 idx e4
unsafePoke a5 idx e5
unsafePoke a6 idx e6
unsafePoke a7 idx e7
unsafePoke a8 idx e8
unsafePoke a9 idx e9
unsafePoke a10 idx e10
unsafeThaw (T11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10) = do
a0' <- unsafeThaw a0
a1' <- unsafeThaw a1
a2' <- unsafeThaw a2
a3' <- unsafeThaw a3
a4' <- unsafeThaw a4
a5' <- unsafeThaw a5
a6' <- unsafeThaw a6
a7' <- unsafeThaw a7
a8' <- unsafeThaw a8
a9' <- unsafeThaw a9
a10' <- unsafeThaw a10
pure (MT11Array a0' a1' a2' a3' a4' a5' a6' a7' a8' a9' a10')
unsafeFreeze (MT11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10) = do
a0' <- unsafeFreeze a0
a1' <- unsafeFreeze a1
a2' <- unsafeFreeze a2
a3' <- unsafeFreeze a3
a4' <- unsafeFreeze a4
a5' <- unsafeFreeze a5
a6' <- unsafeFreeze a6
a7' <- unsafeFreeze a7
a8' <- unsafeFreeze a8
a9' <- unsafeFreeze a9
a10' <- unsafeFreeze a10
pure (T11Array a0' a1' a2' a3' a4' a5' a6' a7' a8' a9' a10')
unsafeSlice (T11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10) i s = T11Array (unsafeSlice a0 i s) (unsafeSlice a1 i s) (unsafeSlice a2 i s) (unsafeSlice a3 i s) (unsafeSlice a4 i s) (unsafeSlice a5 i s) (unsafeSlice a6 i s) (unsafeSlice a7 i s) (unsafeSlice a8 i s) (unsafeSlice a9 i s) (unsafeSlice a10 i s)
scratch s = do
a0 <- scratch s
a1 <- scratch s
a2 <- scratch s
a3 <- scratch s
a4 <- scratch s
a5 <- scratch s
a6 <- scratch s
a7 <- scratch s
a8 <- scratch s
a9 <- scratch s
a10 <- scratch s
pure (MT11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10)
instance Element (T11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10) where
type Array (T11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10) = BArray (T11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10)
type MArray (T11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10) = MBArray (T11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10)
size = sizeB
msize = msizeB
unsafeRead = unsafeReadB
unsafePeek = unsafePeekB
unsafePoke = unsafePokeB
unsafeThaw = unsafeThawB
unsafeFreeze = unsafeFreezeB
unsafeSlice = unsafeSliceB
scratch = scratchB
instance (Show a0, Show a1, Show a2, Show a3, Show a4, Show a5, Show a6, Show a7, Show a8, Show a9, Show a10, Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10) => Show (T11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10) where
show = show . toList
zip11 :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array a5 -> Array a6 -> Array a7 -> Array a8 -> Array a9 -> Array a10 -> Array (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
zip11 a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 = if size a0 == size a1 && size a1 == size a2 && size a2 == size a3 && size a3 == size a4 && size a4 == size a5 && size a5 == size a6 && size a6 == size a7 && size a7 == size a8 && size a8 == size a9 && size a9 == size a10
then T11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
else error "sizes of arguments do not match"
unzip11 :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10) => Array (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) -> (Array a0, Array a1, Array a2, Array a3, Array a4, Array a5, Array a6, Array a7, Array a8, Array a9, Array a10)
unzip11 (T11Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10) = (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
data T12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 where
T12Array :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array a5 -> Array a6 -> Array a7 -> Array a8 -> Array a9 -> Array a10 -> Array a11 -> T12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11
data MT12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 where
MT12Array :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11) => MArray a0 -> MArray a1 -> MArray a2 -> MArray a3 -> MArray a4 -> MArray a5 -> MArray a6 -> MArray a7 -> MArray a8 -> MArray a9 -> MArray a10 -> MArray a11 -> MT12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11
instance (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11) => Element (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) where
type Array (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) = T12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11
type MArray (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) = MT12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11
size (T12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11) = size a0
msize (MT12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11) = msize a0
unsafeRead (T12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11) idx = (unsafeRead a0 idx, unsafeRead a1 idx, unsafeRead a2 idx, unsafeRead a3 idx, unsafeRead a4 idx, unsafeRead a5 idx, unsafeRead a6 idx, unsafeRead a7 idx, unsafeRead a8 idx, unsafeRead a9 idx, unsafeRead a10 idx, unsafeRead a11 idx)
unsafePeek (MT12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11) idx = do
e0 <- unsafePeek a0 idx
e1 <- unsafePeek a1 idx
e2 <- unsafePeek a2 idx
e3 <- unsafePeek a3 idx
e4 <- unsafePeek a4 idx
e5 <- unsafePeek a5 idx
e6 <- unsafePeek a6 idx
e7 <- unsafePeek a7 idx
e8 <- unsafePeek a8 idx
e9 <- unsafePeek a9 idx
e10 <- unsafePeek a10 idx
e11 <- unsafePeek a11 idx
pure (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11)
unsafePoke (MT12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11) idx (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11) = do
unsafePoke a0 idx e0
unsafePoke a1 idx e1
unsafePoke a2 idx e2
unsafePoke a3 idx e3
unsafePoke a4 idx e4
unsafePoke a5 idx e5
unsafePoke a6 idx e6
unsafePoke a7 idx e7
unsafePoke a8 idx e8
unsafePoke a9 idx e9
unsafePoke a10 idx e10
unsafePoke a11 idx e11
unsafeThaw (T12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11) = do
a0' <- unsafeThaw a0
a1' <- unsafeThaw a1
a2' <- unsafeThaw a2
a3' <- unsafeThaw a3
a4' <- unsafeThaw a4
a5' <- unsafeThaw a5
a6' <- unsafeThaw a6
a7' <- unsafeThaw a7
a8' <- unsafeThaw a8
a9' <- unsafeThaw a9
a10' <- unsafeThaw a10
a11' <- unsafeThaw a11
pure (MT12Array a0' a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11')
unsafeFreeze (MT12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11) = do
a0' <- unsafeFreeze a0
a1' <- unsafeFreeze a1
a2' <- unsafeFreeze a2
a3' <- unsafeFreeze a3
a4' <- unsafeFreeze a4
a5' <- unsafeFreeze a5
a6' <- unsafeFreeze a6
a7' <- unsafeFreeze a7
a8' <- unsafeFreeze a8
a9' <- unsafeFreeze a9
a10' <- unsafeFreeze a10
a11' <- unsafeFreeze a11
pure (T12Array a0' a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11')
unsafeSlice (T12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11) i s = T12Array (unsafeSlice a0 i s) (unsafeSlice a1 i s) (unsafeSlice a2 i s) (unsafeSlice a3 i s) (unsafeSlice a4 i s) (unsafeSlice a5 i s) (unsafeSlice a6 i s) (unsafeSlice a7 i s) (unsafeSlice a8 i s) (unsafeSlice a9 i s) (unsafeSlice a10 i s) (unsafeSlice a11 i s)
scratch s = do
a0 <- scratch s
a1 <- scratch s
a2 <- scratch s
a3 <- scratch s
a4 <- scratch s
a5 <- scratch s
a6 <- scratch s
a7 <- scratch s
a8 <- scratch s
a9 <- scratch s
a10 <- scratch s
a11 <- scratch s
pure (MT12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11)
instance Element (T12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11) where
type Array (T12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11) = BArray (T12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11)
type MArray (T12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11) = MBArray (T12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11)
size = sizeB
msize = msizeB
unsafeRead = unsafeReadB
unsafePeek = unsafePeekB
unsafePoke = unsafePokeB
unsafeThaw = unsafeThawB
unsafeFreeze = unsafeFreezeB
unsafeSlice = unsafeSliceB
scratch = scratchB
instance (Show a0, Show a1, Show a2, Show a3, Show a4, Show a5, Show a6, Show a7, Show a8, Show a9, Show a10, Show a11, Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11) => Show (T12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11) where
show = show . toList
zip12 :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array a5 -> Array a6 -> Array a7 -> Array a8 -> Array a9 -> Array a10 -> Array a11 -> Array (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)
zip12 a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 = if size a0 == size a1 && size a1 == size a2 && size a2 == size a3 && size a3 == size a4 && size a4 == size a5 && size a5 == size a6 && size a6 == size a7 && size a7 == size a8 && size a8 == size a9 && size a9 == size a10 && size a10 == size a11
then T12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11
else error "sizes of arguments do not match"
unzip12 :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11) => Array (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) -> (Array a0, Array a1, Array a2, Array a3, Array a4, Array a5, Array a6, Array a7, Array a8, Array a9, Array a10, Array a11)
unzip12 (T12Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11) = (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)
data T13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 where
T13Array :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array a5 -> Array a6 -> Array a7 -> Array a8 -> Array a9 -> Array a10 -> Array a11 -> Array a12 -> T13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12
data MT13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 where
MT13Array :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12) => MArray a0 -> MArray a1 -> MArray a2 -> MArray a3 -> MArray a4 -> MArray a5 -> MArray a6 -> MArray a7 -> MArray a8 -> MArray a9 -> MArray a10 -> MArray a11 -> MArray a12 -> MT13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12
instance (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12) => Element (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) where
type Array (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) = T13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12
type MArray (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) = MT13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12
size (T13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12) = size a0
msize (MT13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12) = msize a0
unsafeRead (T13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12) idx = (unsafeRead a0 idx, unsafeRead a1 idx, unsafeRead a2 idx, unsafeRead a3 idx, unsafeRead a4 idx, unsafeRead a5 idx, unsafeRead a6 idx, unsafeRead a7 idx, unsafeRead a8 idx, unsafeRead a9 idx, unsafeRead a10 idx, unsafeRead a11 idx, unsafeRead a12 idx)
unsafePeek (MT13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12) idx = do
e0 <- unsafePeek a0 idx
e1 <- unsafePeek a1 idx
e2 <- unsafePeek a2 idx
e3 <- unsafePeek a3 idx
e4 <- unsafePeek a4 idx
e5 <- unsafePeek a5 idx
e6 <- unsafePeek a6 idx
e7 <- unsafePeek a7 idx
e8 <- unsafePeek a8 idx
e9 <- unsafePeek a9 idx
e10 <- unsafePeek a10 idx
e11 <- unsafePeek a11 idx
e12 <- unsafePeek a12 idx
pure (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12)
unsafePoke (MT13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12) idx (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12) = do
unsafePoke a0 idx e0
unsafePoke a1 idx e1
unsafePoke a2 idx e2
unsafePoke a3 idx e3
unsafePoke a4 idx e4
unsafePoke a5 idx e5
unsafePoke a6 idx e6
unsafePoke a7 idx e7
unsafePoke a8 idx e8
unsafePoke a9 idx e9
unsafePoke a10 idx e10
unsafePoke a11 idx e11
unsafePoke a12 idx e12
unsafeThaw (T13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12) = do
a0' <- unsafeThaw a0
a1' <- unsafeThaw a1
a2' <- unsafeThaw a2
a3' <- unsafeThaw a3
a4' <- unsafeThaw a4
a5' <- unsafeThaw a5
a6' <- unsafeThaw a6
a7' <- unsafeThaw a7
a8' <- unsafeThaw a8
a9' <- unsafeThaw a9
a10' <- unsafeThaw a10
a11' <- unsafeThaw a11
a12' <- unsafeThaw a12
pure (MT13Array a0' a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12')
unsafeFreeze (MT13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12) = do
a0' <- unsafeFreeze a0
a1' <- unsafeFreeze a1
a2' <- unsafeFreeze a2
a3' <- unsafeFreeze a3
a4' <- unsafeFreeze a4
a5' <- unsafeFreeze a5
a6' <- unsafeFreeze a6
a7' <- unsafeFreeze a7
a8' <- unsafeFreeze a8
a9' <- unsafeFreeze a9
a10' <- unsafeFreeze a10
a11' <- unsafeFreeze a11
a12' <- unsafeFreeze a12
pure (T13Array a0' a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12')
unsafeSlice (T13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12) i s = T13Array (unsafeSlice a0 i s) (unsafeSlice a1 i s) (unsafeSlice a2 i s) (unsafeSlice a3 i s) (unsafeSlice a4 i s) (unsafeSlice a5 i s) (unsafeSlice a6 i s) (unsafeSlice a7 i s) (unsafeSlice a8 i s) (unsafeSlice a9 i s) (unsafeSlice a10 i s) (unsafeSlice a11 i s) (unsafeSlice a12 i s)
scratch s = do
a0 <- scratch s
a1 <- scratch s
a2 <- scratch s
a3 <- scratch s
a4 <- scratch s
a5 <- scratch s
a6 <- scratch s
a7 <- scratch s
a8 <- scratch s
a9 <- scratch s
a10 <- scratch s
a11 <- scratch s
a12 <- scratch s
pure (MT13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12)
instance Element (T13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12) where
type Array (T13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12) = BArray (T13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12)
type MArray (T13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12) = MBArray (T13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12)
size = sizeB
msize = msizeB
unsafeRead = unsafeReadB
unsafePeek = unsafePeekB
unsafePoke = unsafePokeB
unsafeThaw = unsafeThawB
unsafeFreeze = unsafeFreezeB
unsafeSlice = unsafeSliceB
scratch = scratchB
instance (Show a0, Show a1, Show a2, Show a3, Show a4, Show a5, Show a6, Show a7, Show a8, Show a9, Show a10, Show a11, Show a12, Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12) => Show (T13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12) where
show = show . toList
zip13 :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array a5 -> Array a6 -> Array a7 -> Array a8 -> Array a9 -> Array a10 -> Array a11 -> Array a12 -> Array (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)
zip13 a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 = if size a0 == size a1 && size a1 == size a2 && size a2 == size a3 && size a3 == size a4 && size a4 == size a5 && size a5 == size a6 && size a6 == size a7 && size a7 == size a8 && size a8 == size a9 && size a9 == size a10 && size a10 == size a11 && size a11 == size a12
then T13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12
else error "sizes of arguments do not match"
unzip13 :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12) => Array (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) -> (Array a0, Array a1, Array a2, Array a3, Array a4, Array a5, Array a6, Array a7, Array a8, Array a9, Array a10, Array a11, Array a12)
unzip13 (T13Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12) = (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)
data T14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 where
T14Array :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12, Element a13) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array a5 -> Array a6 -> Array a7 -> Array a8 -> Array a9 -> Array a10 -> Array a11 -> Array a12 -> Array a13 -> T14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13
data MT14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 where
MT14Array :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12, Element a13) => MArray a0 -> MArray a1 -> MArray a2 -> MArray a3 -> MArray a4 -> MArray a5 -> MArray a6 -> MArray a7 -> MArray a8 -> MArray a9 -> MArray a10 -> MArray a11 -> MArray a12 -> MArray a13 -> MT14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13
instance (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12, Element a13) => Element (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) where
type Array (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) = T14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13
type MArray (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) = MT14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13
size (T14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13) = size a0
msize (MT14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13) = msize a0
unsafeRead (T14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13) idx = (unsafeRead a0 idx, unsafeRead a1 idx, unsafeRead a2 idx, unsafeRead a3 idx, unsafeRead a4 idx, unsafeRead a5 idx, unsafeRead a6 idx, unsafeRead a7 idx, unsafeRead a8 idx, unsafeRead a9 idx, unsafeRead a10 idx, unsafeRead a11 idx, unsafeRead a12 idx, unsafeRead a13 idx)
unsafePeek (MT14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13) idx = do
e0 <- unsafePeek a0 idx
e1 <- unsafePeek a1 idx
e2 <- unsafePeek a2 idx
e3 <- unsafePeek a3 idx
e4 <- unsafePeek a4 idx
e5 <- unsafePeek a5 idx
e6 <- unsafePeek a6 idx
e7 <- unsafePeek a7 idx
e8 <- unsafePeek a8 idx
e9 <- unsafePeek a9 idx
e10 <- unsafePeek a10 idx
e11 <- unsafePeek a11 idx
e12 <- unsafePeek a12 idx
e13 <- unsafePeek a13 idx
pure (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13)
unsafePoke (MT14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13) idx (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13) = do
unsafePoke a0 idx e0
unsafePoke a1 idx e1
unsafePoke a2 idx e2
unsafePoke a3 idx e3
unsafePoke a4 idx e4
unsafePoke a5 idx e5
unsafePoke a6 idx e6
unsafePoke a7 idx e7
unsafePoke a8 idx e8
unsafePoke a9 idx e9
unsafePoke a10 idx e10
unsafePoke a11 idx e11
unsafePoke a12 idx e12
unsafePoke a13 idx e13
unsafeThaw (T14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13) = do
a0' <- unsafeThaw a0
a1' <- unsafeThaw a1
a2' <- unsafeThaw a2
a3' <- unsafeThaw a3
a4' <- unsafeThaw a4
a5' <- unsafeThaw a5
a6' <- unsafeThaw a6
a7' <- unsafeThaw a7
a8' <- unsafeThaw a8
a9' <- unsafeThaw a9
a10' <- unsafeThaw a10
a11' <- unsafeThaw a11
a12' <- unsafeThaw a12
a13' <- unsafeThaw a13
pure (MT14Array a0' a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13')
unsafeFreeze (MT14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13) = do
a0' <- unsafeFreeze a0
a1' <- unsafeFreeze a1
a2' <- unsafeFreeze a2
a3' <- unsafeFreeze a3
a4' <- unsafeFreeze a4
a5' <- unsafeFreeze a5
a6' <- unsafeFreeze a6
a7' <- unsafeFreeze a7
a8' <- unsafeFreeze a8
a9' <- unsafeFreeze a9
a10' <- unsafeFreeze a10
a11' <- unsafeFreeze a11
a12' <- unsafeFreeze a12
a13' <- unsafeFreeze a13
pure (T14Array a0' a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13')
unsafeSlice (T14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13) i s = T14Array (unsafeSlice a0 i s) (unsafeSlice a1 i s) (unsafeSlice a2 i s) (unsafeSlice a3 i s) (unsafeSlice a4 i s) (unsafeSlice a5 i s) (unsafeSlice a6 i s) (unsafeSlice a7 i s) (unsafeSlice a8 i s) (unsafeSlice a9 i s) (unsafeSlice a10 i s) (unsafeSlice a11 i s) (unsafeSlice a12 i s) (unsafeSlice a13 i s)
scratch s = do
a0 <- scratch s
a1 <- scratch s
a2 <- scratch s
a3 <- scratch s
a4 <- scratch s
a5 <- scratch s
a6 <- scratch s
a7 <- scratch s
a8 <- scratch s
a9 <- scratch s
a10 <- scratch s
a11 <- scratch s
a12 <- scratch s
a13 <- scratch s
pure (MT14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13)
instance Element (T14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13) where
type Array (T14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13) = BArray (T14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13)
type MArray (T14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13) = MBArray (T14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13)
size = sizeB
msize = msizeB
unsafeRead = unsafeReadB
unsafePeek = unsafePeekB
unsafePoke = unsafePokeB
unsafeThaw = unsafeThawB
unsafeFreeze = unsafeFreezeB
unsafeSlice = unsafeSliceB
scratch = scratchB
instance (Show a0, Show a1, Show a2, Show a3, Show a4, Show a5, Show a6, Show a7, Show a8, Show a9, Show a10, Show a11, Show a12, Show a13, Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12, Element a13) => Show (T14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13) where
show = show . toList
zip14 :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12, Element a13) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array a5 -> Array a6 -> Array a7 -> Array a8 -> Array a9 -> Array a10 -> Array a11 -> Array a12 -> Array a13 -> Array (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
zip14 a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 = if size a0 == size a1 && size a1 == size a2 && size a2 == size a3 && size a3 == size a4 && size a4 == size a5 && size a5 == size a6 && size a6 == size a7 && size a7 == size a8 && size a8 == size a9 && size a9 == size a10 && size a10 == size a11 && size a11 == size a12 && size a12 == size a13
then T14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13
else error "sizes of arguments do not match"
unzip14 :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12, Element a13) => Array (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) -> (Array a0, Array a1, Array a2, Array a3, Array a4, Array a5, Array a6, Array a7, Array a8, Array a9, Array a10, Array a11, Array a12, Array a13)
unzip14 (T14Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13) = (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
data T15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 where
T15Array :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12, Element a13, Element a14) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array a5 -> Array a6 -> Array a7 -> Array a8 -> Array a9 -> Array a10 -> Array a11 -> Array a12 -> Array a13 -> Array a14 -> T15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14
data MT15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 where
MT15Array :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12, Element a13, Element a14) => MArray a0 -> MArray a1 -> MArray a2 -> MArray a3 -> MArray a4 -> MArray a5 -> MArray a6 -> MArray a7 -> MArray a8 -> MArray a9 -> MArray a10 -> MArray a11 -> MArray a12 -> MArray a13 -> MArray a14 -> MT15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14
instance (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12, Element a13, Element a14) => Element (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) where
type Array (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) = T15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14
type MArray (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) = MT15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14
size (T15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14) = size a0
msize (MT15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14) = msize a0
unsafeRead (T15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14) idx = (unsafeRead a0 idx, unsafeRead a1 idx, unsafeRead a2 idx, unsafeRead a3 idx, unsafeRead a4 idx, unsafeRead a5 idx, unsafeRead a6 idx, unsafeRead a7 idx, unsafeRead a8 idx, unsafeRead a9 idx, unsafeRead a10 idx, unsafeRead a11 idx, unsafeRead a12 idx, unsafeRead a13 idx, unsafeRead a14 idx)
unsafePeek (MT15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14) idx = do
e0 <- unsafePeek a0 idx
e1 <- unsafePeek a1 idx
e2 <- unsafePeek a2 idx
e3 <- unsafePeek a3 idx
e4 <- unsafePeek a4 idx
e5 <- unsafePeek a5 idx
e6 <- unsafePeek a6 idx
e7 <- unsafePeek a7 idx
e8 <- unsafePeek a8 idx
e9 <- unsafePeek a9 idx
e10 <- unsafePeek a10 idx
e11 <- unsafePeek a11 idx
e12 <- unsafePeek a12 idx
e13 <- unsafePeek a13 idx
e14 <- unsafePeek a14 idx
pure (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14)
unsafePoke (MT15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14) idx (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14) = do
unsafePoke a0 idx e0
unsafePoke a1 idx e1
unsafePoke a2 idx e2
unsafePoke a3 idx e3
unsafePoke a4 idx e4
unsafePoke a5 idx e5
unsafePoke a6 idx e6
unsafePoke a7 idx e7
unsafePoke a8 idx e8
unsafePoke a9 idx e9
unsafePoke a10 idx e10
unsafePoke a11 idx e11
unsafePoke a12 idx e12
unsafePoke a13 idx e13
unsafePoke a14 idx e14
unsafeThaw (T15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14) = do
a0' <- unsafeThaw a0
a1' <- unsafeThaw a1
a2' <- unsafeThaw a2
a3' <- unsafeThaw a3
a4' <- unsafeThaw a4
a5' <- unsafeThaw a5
a6' <- unsafeThaw a6
a7' <- unsafeThaw a7
a8' <- unsafeThaw a8
a9' <- unsafeThaw a9
a10' <- unsafeThaw a10
a11' <- unsafeThaw a11
a12' <- unsafeThaw a12
a13' <- unsafeThaw a13
a14' <- unsafeThaw a14
pure (MT15Array a0' a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14')
unsafeFreeze (MT15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14) = do
a0' <- unsafeFreeze a0
a1' <- unsafeFreeze a1
a2' <- unsafeFreeze a2
a3' <- unsafeFreeze a3
a4' <- unsafeFreeze a4
a5' <- unsafeFreeze a5
a6' <- unsafeFreeze a6
a7' <- unsafeFreeze a7
a8' <- unsafeFreeze a8
a9' <- unsafeFreeze a9
a10' <- unsafeFreeze a10
a11' <- unsafeFreeze a11
a12' <- unsafeFreeze a12
a13' <- unsafeFreeze a13
a14' <- unsafeFreeze a14
pure (T15Array a0' a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14')
unsafeSlice (T15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14) i s = T15Array (unsafeSlice a0 i s) (unsafeSlice a1 i s) (unsafeSlice a2 i s) (unsafeSlice a3 i s) (unsafeSlice a4 i s) (unsafeSlice a5 i s) (unsafeSlice a6 i s) (unsafeSlice a7 i s) (unsafeSlice a8 i s) (unsafeSlice a9 i s) (unsafeSlice a10 i s) (unsafeSlice a11 i s) (unsafeSlice a12 i s) (unsafeSlice a13 i s) (unsafeSlice a14 i s)
scratch s = do
a0 <- scratch s
a1 <- scratch s
a2 <- scratch s
a3 <- scratch s
a4 <- scratch s
a5 <- scratch s
a6 <- scratch s
a7 <- scratch s
a8 <- scratch s
a9 <- scratch s
a10 <- scratch s
a11 <- scratch s
a12 <- scratch s
a13 <- scratch s
a14 <- scratch s
pure (MT15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14)
instance Element (T15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14) where
type Array (T15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14) = BArray (T15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14)
type MArray (T15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14) = MBArray (T15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14)
size = sizeB
msize = msizeB
unsafeRead = unsafeReadB
unsafePeek = unsafePeekB
unsafePoke = unsafePokeB
unsafeThaw = unsafeThawB
unsafeFreeze = unsafeFreezeB
unsafeSlice = unsafeSliceB
scratch = scratchB
instance (Show a0, Show a1, Show a2, Show a3, Show a4, Show a5, Show a6, Show a7, Show a8, Show a9, Show a10, Show a11, Show a12, Show a13, Show a14, Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12, Element a13, Element a14) => Show (T15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14) where
show = show . toList
zip15 :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12, Element a13, Element a14) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array a5 -> Array a6 -> Array a7 -> Array a8 -> Array a9 -> Array a10 -> Array a11 -> Array a12 -> Array a13 -> Array a14 -> Array (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
zip15 a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 = if size a0 == size a1 && size a1 == size a2 && size a2 == size a3 && size a3 == size a4 && size a4 == size a5 && size a5 == size a6 && size a6 == size a7 && size a7 == size a8 && size a8 == size a9 && size a9 == size a10 && size a10 == size a11 && size a11 == size a12 && size a12 == size a13 && size a13 == size a14
then T15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14
else error "sizes of arguments do not match"
unzip15 :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12, Element a13, Element a14) => Array (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) -> (Array a0, Array a1, Array a2, Array a3, Array a4, Array a5, Array a6, Array a7, Array a8, Array a9, Array a10, Array a11, Array a12, Array a13, Array a14)
unzip15 (T15Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14) = (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)
data T16Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 where
T16Array :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12, Element a13, Element a14, Element a15) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array a5 -> Array a6 -> Array a7 -> Array a8 -> Array a9 -> Array a10 -> Array a11 -> Array a12 -> Array a13 -> Array a14 -> Array a15 -> T16Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15
data MT16Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 where
MT16Array :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12, Element a13, Element a14, Element a15) => MArray a0 -> MArray a1 -> MArray a2 -> MArray a3 -> MArray a4 -> MArray a5 -> MArray a6 -> MArray a7 -> MArray a8 -> MArray a9 -> MArray a10 -> MArray a11 -> MArray a12 -> MArray a13 -> MArray a14 -> MArray a15 -> MT16Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15
instance (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12, Element a13, Element a14, Element a15) => Element (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) where
type Array (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) = T16Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15
type MArray (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) = MT16Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15
size (T16Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15) = size a0
msize (MT16Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15) = msize a0
unsafeRead (T16Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15) idx = (unsafeRead a0 idx, unsafeRead a1 idx, unsafeRead a2 idx, unsafeRead a3 idx, unsafeRead a4 idx, unsafeRead a5 idx, unsafeRead a6 idx, unsafeRead a7 idx, unsafeRead a8 idx, unsafeRead a9 idx, unsafeRead a10 idx, unsafeRead a11 idx, unsafeRead a12 idx, unsafeRead a13 idx, unsafeRead a14 idx, unsafeRead a15 idx)
unsafePeek (MT16Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15) idx = do
e0 <- unsafePeek a0 idx
e1 <- unsafePeek a1 idx
e2 <- unsafePeek a2 idx
e3 <- unsafePeek a3 idx
e4 <- unsafePeek a4 idx
e5 <- unsafePeek a5 idx
e6 <- unsafePeek a6 idx
e7 <- unsafePeek a7 idx
e8 <- unsafePeek a8 idx
e9 <- unsafePeek a9 idx
e10 <- unsafePeek a10 idx
e11 <- unsafePeek a11 idx
e12 <- unsafePeek a12 idx
e13 <- unsafePeek a13 idx
e14 <- unsafePeek a14 idx
e15 <- unsafePeek a15 idx
pure (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15)
unsafePoke (MT16Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15) idx (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15) = do
unsafePoke a0 idx e0
unsafePoke a1 idx e1
unsafePoke a2 idx e2
unsafePoke a3 idx e3
unsafePoke a4 idx e4
unsafePoke a5 idx e5
unsafePoke a6 idx e6
unsafePoke a7 idx e7
unsafePoke a8 idx e8
unsafePoke a9 idx e9
unsafePoke a10 idx e10
unsafePoke a11 idx e11
unsafePoke a12 idx e12
unsafePoke a13 idx e13
unsafePoke a14 idx e14
unsafePoke a15 idx e15
unsafeThaw (T16Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15) = do
a0' <- unsafeThaw a0
a1' <- unsafeThaw a1
a2' <- unsafeThaw a2
a3' <- unsafeThaw a3
a4' <- unsafeThaw a4
a5' <- unsafeThaw a5
a6' <- unsafeThaw a6
a7' <- unsafeThaw a7
a8' <- unsafeThaw a8
a9' <- unsafeThaw a9
a10' <- unsafeThaw a10
a11' <- unsafeThaw a11
a12' <- unsafeThaw a12
a13' <- unsafeThaw a13
a14' <- unsafeThaw a14
a15' <- unsafeThaw a15
pure (MT16Array a0' a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15')
unsafeFreeze (MT16Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15) = do
a0' <- unsafeFreeze a0
a1' <- unsafeFreeze a1
a2' <- unsafeFreeze a2
a3' <- unsafeFreeze a3
a4' <- unsafeFreeze a4
a5' <- unsafeFreeze a5
a6' <- unsafeFreeze a6
a7' <- unsafeFreeze a7
a8' <- unsafeFreeze a8
a9' <- unsafeFreeze a9
a10' <- unsafeFreeze a10
a11' <- unsafeFreeze a11
a12' <- unsafeFreeze a12
a13' <- unsafeFreeze a13
a14' <- unsafeFreeze a14
a15' <- unsafeFreeze a15
pure (T16Array a0' a1' a2' a3' a4' a5' a6' a7' a8' a9' a10' a11' a12' a13' a14' a15')
unsafeSlice (T16Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15) i s = T16Array (unsafeSlice a0 i s) (unsafeSlice a1 i s) (unsafeSlice a2 i s) (unsafeSlice a3 i s) (unsafeSlice a4 i s) (unsafeSlice a5 i s) (unsafeSlice a6 i s) (unsafeSlice a7 i s) (unsafeSlice a8 i s) (unsafeSlice a9 i s) (unsafeSlice a10 i s) (unsafeSlice a11 i s) (unsafeSlice a12 i s) (unsafeSlice a13 i s) (unsafeSlice a14 i s) (unsafeSlice a15 i s)
scratch s = do
a0 <- scratch s
a1 <- scratch s
a2 <- scratch s
a3 <- scratch s
a4 <- scratch s
a5 <- scratch s
a6 <- scratch s
a7 <- scratch s
a8 <- scratch s
a9 <- scratch s
a10 <- scratch s
a11 <- scratch s
a12 <- scratch s
a13 <- scratch s
a14 <- scratch s
a15 <- scratch s
pure (MT16Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15)
instance Element (T16Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15) where
type Array (T16Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15) = BArray (T16Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15)
type MArray (T16Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15) = MBArray (T16Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15)
size = sizeB
msize = msizeB
unsafeRead = unsafeReadB
unsafePeek = unsafePeekB
unsafePoke = unsafePokeB
unsafeThaw = unsafeThawB
unsafeFreeze = unsafeFreezeB
unsafeSlice = unsafeSliceB
scratch = scratchB
zip16 :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12, Element a13, Element a14, Element a15) => Array a0 -> Array a1 -> Array a2 -> Array a3 -> Array a4 -> Array a5 -> Array a6 -> Array a7 -> Array a8 -> Array a9 -> Array a10 -> Array a11 -> Array a12 -> Array a13 -> Array a14 -> Array a15 -> Array (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)
zip16 a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 = if size a0 == size a1 && size a1 == size a2 && size a2 == size a3 && size a3 == size a4 && size a4 == size a5 && size a5 == size a6 && size a6 == size a7 && size a7 == size a8 && size a8 == size a9 && size a9 == size a10 && size a10 == size a11 && size a11 == size a12 && size a12 == size a13 && size a13 == size a14 && size a14 == size a15
then T16Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15
else error "sizes of arguments do not match"
unzip16 :: (Element a0, Element a1, Element a2, Element a3, Element a4, Element a5, Element a6, Element a7, Element a8, Element a9, Element a10, Element a11, Element a12, Element a13, Element a14, Element a15) => Array (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) -> (Array a0, Array a1, Array a2, Array a3, Array a4, Array a5, Array a6, Array a7, Array a8, Array a9, Array a10, Array a11, Array a12, Array a13, Array a14, Array a15)
unzip16 (T16Array a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15) = (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)