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