我是 Haskell 的新手,我试图理解为什么需要编写类型声明。由于 Haskell 有类型推断,我什么时候需要第一行? GHCI 似乎使用我使用 ':t' 生成正确的输出
到目前为止,我发现的唯一一个似乎需要声明的例子如下。
maximum' :: (Ord a) => [a] -> a
maximum' = foldr1 max
但是,如果我添加“-XNoMonomorphismRestriction”标志声明就不再需要了。是否存在类型推断不起作用并且需要指定类型的特定情况?
因为我可能在类型声明中有一个错误并且没有直接的好处,所以我宁愿不写它。同样,我刚刚开始学习 Haskell,所以如果我错了,请纠正我,因为我想养成良好的习惯。
编辑:事实证明 Type inference is a double-edged sword Real World Haskell 的部分这本书对这个话题有很好的讨论。
最佳答案
undefined
的函数开始.一切都编译好了,我知道我的想法似乎还不错。然后我继续替换undefined
通过真实代码 关于types - 为什么要在 Haskell 中编写类型声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6246521/