【发布时间】:2012-05-03 02:38:00
【问题描述】:
我之前问过这个question,经过大量调查后我得出结论,GHC 仅适用于中缀$ 和.。
对于这个问题,我假设 GHC 遵循RankNTypes - Haskell Prime 页面上提到的系统,在arbitary-rank 中进一步详细说明。
RankNTypes - Haskell Prime 页面声明如下:
分配没有显式签名的参数变量 向上推理中的单型,但可以继承任意等级的类型 在向下检查中。
我假设“分配的单型”是指将 rank-N 类型转换为 rank-1 类型,方法是将它们的所有限定符移到最外层。
我也相信这是导致我问上一个问题的异常类型错误的原因。
所以我有几个问题:
1) 无论如何让 GHC 在隐式转换为单型时发出警告(或错误)?我之前的question 中的类型错误需要一段时间才能解决,转换为单一类型的警告会比类型错误更有帮助。
2)在某些情况下,隐含的“分配给单型”是明智的行为,如果是,您能举个例子吗?
3)关于中缀$和.,这些在GHC中似乎有特殊规定。这是在哪里记录的? GHC 还有其他特殊规则吗?它们记录在哪里?
【问题讨论】:
-
This 可能感兴趣。
-
至于第 3 点,我怀疑它们仅记录在 GHC 源中。无论如何,我不知道有任何文件。您可以尝试在 ghc-users 列表中询问权威答案。
标签: haskell types polymorphism