在Haskell Data.Array.Repa中按常量缩放矩阵

在Haskell Data.Array.Repa中按常量缩放矩阵,haskell,repa,Haskell,Repa,在repa-3.2.3.3中,是否有一种紧凑的方法通过常数来缩放矩阵? 现在我用的是: (.*) :: (Num d, Shape sh, Source r d) => Array r sh d -> d -> Array D sh d (.*) m c = R.map ((*) c) m 我很困惑,因为这样的函数通常包含在数组库中 在repa-3.2.3.3中,是否有一种紧凑的方法通过常数来缩放矩阵 不,没有。毕竟,map为您提供了一种应用任何函数元素的方法。但是,请记住,

在repa-3.2.3.3中,是否有一种紧凑的方法通过常数来缩放矩阵? 现在我用的是:

(.*) :: (Num d, Shape sh, Source r d) => Array r sh d -> d -> Array D sh d
(.*) m c = R.map ((*) c) m
我很困惑,因为这样的函数通常包含在数组库中

在repa-3.2.3.3中,是否有一种紧凑的方法通过常数来缩放矩阵

不,没有。毕竟,
map
为您提供了一种应用任何函数元素的方法。但是,请记住,您可能应该内联函数():

编写快速代码的建议:

[……]

二,。将
INLINE
pragmas添加到代码中的所有叶函数,尤其是计算数值结果的叶函数。非内联的惰性函数调用每次可能花费50个周期以上,而每个数值运算符只花费一个(或更少)。内联叶函数还可以确保它们在适当的数字类型上是专门的

在repa-3.2.3.3中,是否有一种紧凑的方法通过常数来缩放矩阵

不,没有。毕竟,
map
为您提供了一种应用任何函数元素的方法。但是,请记住,您可能应该内联函数():

编写快速代码的建议:

[……]

二,。将
INLINE
pragmas添加到代码中的所有叶函数,尤其是计算数值结果的叶函数。非内联的惰性函数调用每次可能花费50个周期以上,而每个数值运算符只花费一个(或更少)。内联叶函数还可以确保它们在适当的数字类型上是专门的

在repa-3.2.3.3中,是否有一种紧凑的方法通过常数来缩放矩阵

不,没有。毕竟,
map
为您提供了一种应用任何函数元素的方法。但是,请记住,您可能应该内联函数():

编写快速代码的建议:

[……]

二,。将
INLINE
pragmas添加到代码中的所有叶函数,尤其是计算数值结果的叶函数。非内联的惰性函数调用每次可能花费50个周期以上,而每个数值运算符只花费一个(或更少)。内联叶函数还可以确保它们在适当的数字类型上是专门的

在repa-3.2.3.3中,是否有一种紧凑的方法通过常数来缩放矩阵

不,没有。毕竟,
map
为您提供了一种应用任何函数元素的方法。但是,请记住,您可能应该内联函数():

编写快速代码的建议:

[……]

二,。将
INLINE
pragmas添加到代码中的所有叶函数,尤其是计算数值结果的叶函数。非内联的惰性函数调用每次可能花费50个周期以上,而每个数值运算符只花费一个(或更少)。内联叶函数还可以确保它们在适当的数字类型上是专门的


使用一个部分使它稍微好一点:
R.map(c*)m
。我认为你的函数很好,尽管我可能会让它不受限制。通常不需要提供每个元素的操作,因为任何这样的操作都可以使用fmap在整个Functor中应用。@BoydStephenSmithJr::或者一个等价的函数,因为
Array
不是
Functor
的一个实例。使用一个节会稍微好一点:
R.map(c*)m
。我认为您的函数很好,尽管我可能会让它无需任何说明。通常不需要提供每个元素的操作,因为任何这样的操作都可以使用fmap在整个Functor中应用。@BoydStephenSmithJr::或者一个等价的函数,因为
Array
不是
Functor
的一个实例。使用一个节会稍微好一点:
R.map(c*)m
。我认为您的函数很好,尽管我可能会让它无需任何说明。通常不需要提供每个元素的操作,因为任何这样的操作都可以使用fmap在整个Functor中应用。@BoydStephenSmithJr::或者一个等价的函数,因为
Array
不是
Functor
的一个实例。使用一个节会稍微好一点:
R.map(c*)m
。我认为您的函数很好,尽管我可能会让它无需任何说明。通常不需要提供每个元素的操作,因为任何这样的操作都是使用fmap在整个函子上应用的。@BoydStephenSmithJr.:或等效函数,因为
数组
不是
函子
的实例。