Могу я назвать сигнатуру функции?

Я передаю частично примененную функцию. Полная подпись:

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: ошибка синтаксического анализа на входе `-> '

Что я делаю не так?

10
задан Tim Perry 17 June 2011 в 21:37
поделиться