我想知道是否有更快/更好的方法来编写以下 repa 函数
zipOverColumns :: (Source r1 a, Source r2 b)
=> (a -> b -> c)
-> Array r1 DIM1 a
-> Array r2 DIM2 b
-> Array D DIM2 c
zipOverColumns f x y = traverse y id lookup where
lookup get sh@(Z :. _ :. r) = f (x ! (Z :. r)) $ get sh
这是一些示例输出
>>> toList $ zipOverColumns (*) (fromListUnboxed (Z :. 3) [1,2,3])
(fromListUnboxed (Z :. 2 :. 3) [4,5,6,7,8,9])
[4.0,10.0,18.0,7.0,16.0,27.0]