col :: forall a m n. (KnownNat m, KnownNat n) => P.Int -> M m n a -> V m a
col i (M a) = V $ V.generate m (\x -> a V.! (i+x*n))
  where
    m = P.fromInteger $ natVal (Proxy :: Proxy m)
    n = P.fromInteger $ natVal (Proxy :: Proxy n)
col :: forall a m n. (KnownNat m, KnownNat n) => P.Int -> M m n a -> V m a
col i (M a) = V $ V.generate m (\x -> a V.! (i+x*n))
  where
    m = P.fromInteger $ natVal (Proxy :: Proxy m)
    n = P.fromInteger $ natVal (Proxy :: Proxy n)
col i (M a) = V $ V.generate m (\x -> a V.! (i+x*n))
  where
    m = P.fromInteger $ natVal (Proxy :: Proxy m)
    n = P.fromInteger $ natVal (Proxy :: Proxy n)