更高等级类型的GHC类型推断 - 分配给单一类型

时间:2012-05-03 02:38:01

标签: haskell types polymorphism

我之前问过这个问题question,经过多次调查后我得出结论,GHC只适用于中缀$.

对于这个问题,我假设GHC遵循RankNTypes - Haskell Prime中进一步阐述的arbitary-rank页面上提到的系统。

RankNTypes - Haskell Prime页面说明了以下内容:

  

分配没有显式签名的参数变量   向上推理中的单型,但可以继承任意级别的类型   在向下检查。

我认为“分配的单一型”意味着通过将所有限定符移动到最外层,将rank-N类型转换为rank-1类型。

我也相信这是导致我提出上一个问题的不寻常类型错误的原因。

所以我有几个问题:

1)无论如何让GHC在隐式转换为monotypes时发出警告(或错误)?我之前question中的类型错误需要一段时间才能解决,转换为monotype的警告比类型错误更有帮助。
2)是否存在隐含的“分配单一类型”是明智行为的情况,如果是这样,你能举个例子吗?
3)关于中缀$.,这些似乎在GHC中有特殊规则。这记录在哪里? GHC有没有其他特殊规则,它们在哪里记录?

1 个答案:

答案 0 :(得分:3)

http://hackage.haskell.org/trac/ghc/ticket/5596与此相关 - 我认为没有任何官方文档。