![]() |
1
19
多态递归(函数以不同于调用它的类型调用自己) 总是 需要类型签名。完整的解释在 Section 4.4.1 哈斯克尔2010年报告:
后面的同一节给出了一个类型签名支持的多态递归示例。 我的理解是,在存在多态递归的情况下,独立类型推理通常是不可确定的,因此Haskell甚至不尝试。 在这种情况下,类型检查器从
在哪里?
对程序进行细微修改会产生不同的结果,原因相同:
根据你最初的推理,哈斯克尔会推断
但是,它开始于
|