Подтвердить что ты не робот

Вывод типа GHC для более высоких ранговых типов - назначение монотипов

Ранее я спросил об этом question, и после большого расследования я пришел к выводу, что существуют специальные правила GHC применяются только для инфикс $ и ..

По этому вопросу я предполагаю, что GHC следует системе, упомянутой на странице RankNTypes - Haskell Prime, подробно описанной в arbitary-rank.

Страница RankNTypes - Haskell Prime содержит следующее:

переменные параметра без явных подписей назначаются монотипов в верхнем выводе, но может наследовать типы произвольного ранга при проверке вниз.

Я предполагаю, что "назначенные монотипы" означают, что типы ранга-N преобразуются в типы ранга-1, перемещая все их квалификаторы на самый внешний уровень.

Я также считаю, что это вызвало необычную ошибку типа, которая привела к тому, что я задал свой предыдущий вопрос.

Итак, у меня есть несколько вопросов:

1) Есть ли в любом случае, чтобы GHC предупредил (или об ошибке) о неявном преобразовании в монотипы? Ошибка типа в предыдущем question заняла некоторое время, чтобы выработать предупреждение о том, что преобразование в монотип было бы более полезным, чем ошибка типа.
2) Существуют ли случаи, когда неявное "назначение монотипам" является разумным поведением, и если да, можете ли вы привести пример?
3) Что касается инфикс $ и ., они, похоже, имеют специальные правила в GHC. Где это документировано? Существуют ли какие-либо другие специальные правила, которые имеют GHC, и где они задокументированы?

4b9b3361