部分的に適用された関数を渡しています。完全な署名は次のとおりです。
import Data.Map as Map
-- Update the correct bin of the histogram based on the min value, bin width,
-- the histogram stored as a map, and the actual value we are interested in.
updateHist :: Double -> Double -> Map.Map Bin Double -> Double ->
Map.Map Bin Double
この関数は、ヒストグラムのデータを格納する Map を更新します。最初の 2 つのパラメーターは、関心のあるデータの下限を示し、次はヒストグラムのビン幅です。プログラムの起動時にこれらの値を入力し、部分的に適用された関数をモジュール全体に渡します。これは、次のような署名を持つ関数がたくさんあることを意味します。
-- Extra the data out of the string and update the histogram (in the Map) with it.
doSomething :: String -> (Map.Map Bin Double -> Double -> Map.Map Bin Double) ->
Map.Map Bin Double
これはすべてうまくいきますが、「(Map.Map Bin Double -> Double -> Map.Map Bin Double)」と書くのはかなり冗長です。それらをすべてタイプとして「UpdateHistFunc」に置き換えたいのですが、何らかの理由で失敗し続けます。
私は試した:
newtype UpdateHistFunc = Map.Map Bin Double -> Double -> Map.Map Bin Double
これはエラーで失敗しました:
HistogramForColumn.hs:84:44: 入力 `->' の解析エラー
私は何を間違っていますか?