在weightDelta
上运行hlint时,函数一直在提示Eta减小。我读了另一个相关的埃塔减少question,但我似乎无法将理解转移到这种情况。对Eta的理解减少
module StackQuestion where
import qualified Data.Vector as V
type Weights = V.Vector Double
type LearningRate = Double
weightDelta :: LearningRate -> Double -> Double -> Weights -> Weights
weightDelta n r y ws = V.map update ws
where update w = diff * n * w
diff = r - y
我试图将“减少”它指向自由语法的每一个变化都会使它断裂。 需要改变的地方在哪里,是否有任何直觉或诡计来避免将来减少eta的建议?
请注意,一个eta-reduce转换适用于一个单一的参数,特别是最后的显式参数,在你的情况下是'ws'。 – 2012-07-08 09:06:02
正如一个注释,这些减少(和更多)可以通过'pointfree'程序('cabal install pointfree')自动完成,因此您可以尝试测试/扩展您的理解。 (例如,它表示完全无点的版本是'weightDelta =(((V.map。(*))。)。)。(。( - ))。(。)。(*)'。) – huon 2012-07-09 07:52:08