Многие вводные тексты расскажут вам, что подписи типа Haskell "почти всегда" являются необязательными. Может ли кто-нибудь количественно определить "почти" часть?
Насколько я могу судить, единственный раз, когда вам нужна явная подпись, нужно устранить классы классов. (Канонический пример: read . show
.) Есть ли другие случаи, о которых я не думал, или это он?
(Я знаю, что если вы выходите за пределы Haskell 2010, существует множество исключений. Например, GHC никогда не выведет типы ранжирования N. Но типы ранга N - это языковое расширение, а не часть официального стандарта [ еще].)