row :: forall a m n. (KnownNat m, KnownNat n) => P.Int -> M m n a -> V n a
row i (M a) = V $ V.unsafeSlice (i*m) n a
  where
    m = P.fromInteger $ natVal (Proxy :: Proxy m)
    n = P.fromInteger $ natVal (Proxy :: Proxy n)
row :: forall a m n. (KnownNat m, KnownNat n) => P.Int -> M m n a -> V n a
row i (M a) = V $ V.unsafeSlice (i*m) n a
  where
    m = P.fromInteger $ natVal (Proxy :: Proxy m)
    n = P.fromInteger $ natVal (Proxy :: Proxy n)
row i (M a) = V $ V.unsafeSlice (i*m) n a
  where
    m = P.fromInteger $ natVal (Proxy :: Proxy m)
    n = P.fromInteger $ natVal (Proxy :: Proxy n)