我以前问过这个问题,经过大量调查后,我得出结论,GHC 仅适用于中缀$
和.
.
对于这个问题,我假设 GHC 遵循RankNTypes - Haskell Prime页面上提到的系统,该页面在 arbitary -rank中进一步详细说明。
RankNTypes - Haskell Prime页面声明如下:
没有显式签名的参数变量在向上推理中被分配为单型,但在向下检查中可以继承任意等级的类型。
我假设“分配的单型”意味着通过将所有限定符移动到最外层来将 rank-N 类型转换为 rank-1 类型。
我也相信这就是导致我问上一个问题的异常类型错误的原因。
所以我有几个问题:
1)无论如何让GHC警告(或错误)隐式转换为单型?我上一个问题中的类型错误需要一段时间才能解决,转换为单一类型的警告会比类型错误更有帮助。
2)是否存在隐含的“分配给单一类型”是明智行为的情况,如果是这样,你能举个例子吗?
3)关于中缀$
和.
,这些似乎在GHC中有特殊规则。这是在哪里记录的?GHC 还有其他特殊规则吗?它们记录在哪里?