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