3
我想知道如果有寫下面repA的功能惹巴:ZipWith'ing在列
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 [email protected](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]
這是我第一次聽說yarr。看起來很有趣。這個設計怎麼樣能讓它在這裏擊敗重做? – 2013-03-25 09:04:21
@Jonathan Fischoff簡要說明:1)'repa'遍歷線性索引並在每次迭代中執行昂貴的積分除法以獲得複合索引(行,列)。 'yarr'分開保存指數。 2)循環展開。閱讀[blogpost](http://habrahabr.ru/post/170571/)瞭解更多信息(俄文版,在Chrome中翻譯此頁)。 – leventov 2013-03-25 10:33:54
然而,Repa 4將會進行流融合並循環展開,因此它將與Yarr完成此任務。 – leventov 2013-03-25 10:36:23