在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