зачем писать объявления типов в Haskell?

Я новичок в Haskell и пытаюсь понять, зачем нужно писать объявления типов. Поскольку в Haskell есть вывод типов, когда мне вообще нужна первая строка? GHCI, кажется, генерирует правильный вывод, если я использую ': t'

Единственный пример, который я нашел до сих пор, который, кажется, требует объявления, следующий.

maximum' :: (Ord a) => [a] -> a  
maximum' = foldr1 max

Однако, если я добавляю флаг «-XNoMonomorphismRestriction», объявление не требуется очередной раз. Существуют ли конкретные ситуации, когда вывод типа не работает и нужно указывать типы?

Поскольку у меня может быть ошибка в объявлении типа и не будет прямой выгоды, я бы предпочел не писать об этом. Опять же, я только начал изучать Haskell,поэтому, пожалуйста, поправьте меня, если я ошибаюсь, так как я хочу развить хорошие привычки.

РЕДАКТИРОВАТЬ: Оказывается, вывод типа - это палка о двух концах раздела Real World Haskell В книге есть хорошее обсуждение этой темы.

24
задан Guy Coder 15 December 2013 в 15:08
поделиться