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