不明白为什么会这样,指的是:Rank2Types的目的是什么?-> @dfeuer 解释:
... 要求参数是多态的不仅允许它与多种类型一起使用;它还限制了该函数可以用它的参数做什么以及它如何产生它的结果......
Run Code Online (Sandbox Code Playgroud)f :: (forall a . [a] -> a) -> IO ()...事实上,没有函数返回不在给定列表中的元素会进行类型检查
在对 rank-N 类型的任何解释中,我都没有看到这种效果(或好处)的描述,大部分时间是关于让被调用者选择类型等的故事......这对我来说很清楚并且易于掌握但是我看不出我们可以通过哪种美德(仅扩展等级)来控制/限制功能域(和共域)...
如果有人可以更深入地了解此处涉及的 rankN 机制。谢谢
我很好奇是否可以在 Haskell 中编写这样的(伪代码):
data Clock = Clock {hour :: (0 <= Int <= 24), minutes :: (0 <= Int <= 60)}
Run Code Online (Sandbox Code Playgroud)
使(在类型级别)无法创建如下内容:
let a = Clock 34 236
Run Code Online (Sandbox Code Playgroud)
或者应该使用一种时钟构建器来检查并创建有效的时钟时间?