Я передаю частично примененную функцию. Полная подпись:
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
Функция обновляет карту, в которой хранятся данные для гистограммы. Первые два параметра задают нижние границы интересующих нас данных, следующий — ширина ячейки для гистограммы. Я заполняю эти значения при запуске программы и передаю частично примененную функцию по всему модулю. Это означает, что у меня есть масса функций с такой подписью, как:
-- 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: ошибка синтаксического анализа при вводе `->'
Что я делаю не так?