Я новичок в Haskell и пытаюсь понять, почему нужно писать объявления типов.Поскольку у Haskell есть вывод типа, когда мне вообще нужна первая строка?Кажется, что GHCI генерирует правильный вывод с использованием ': t'
Единственный пример, который я нашел до сих пор, который, кажется, нуждается в объявлении, следующий:
maximum' :: (Ord a) => [a] -> a
maximum' = foldr1 max
Однако, если я добавлюОбъявление флага "-XNoMonomorphismRestriction" больше не требуется.Существуют ли конкретные ситуации, когда вывод типов не работает, и нужно указывать типы?
Поскольку у меня может быть ошибка в объявлении типа и нет прямой выгоды, я бы не стал ее писать.Опять же, я только начал изучать Haskell, поэтому, пожалуйста, исправьте меня, если я ошибаюсь, поскольку я хочу развить хорошие привычки.
РЕДАКТИРОВАТЬ: Оказывается, что вывод типа является обоюдоострым мечом раздел книги Real World Haskell содержит хорошее обсуждение этой темы.