【发布时间】:2011-09-08 22:41:05
【问题描述】:
我是 Haskell 的新手,我试图理解为什么需要编写类型声明。由于 Haskell 有类型推断,我什么时候需要第一行? GHCI 似乎使用 ':t' 生成正确的输出
到目前为止,我发现的唯一一个似乎需要声明的例子如下。
maximum' :: (Ord a) => [a] -> a
maximum' = foldr1 max
但是,如果我添加“-XNoMonomorphismRestriction”标志声明就不再需要了。是否存在类型推断不起作用并且需要指定类型的特定情况?
由于我可能在类型声明中有错误并且没有直接的好处,我宁愿不写它。再说一次,我刚刚开始学习 Haskell,所以如果我错了,请纠正我,因为我想养成良好的习惯。
编辑:事实证明,Real World Haskell 书中的Type inference is a double-edged sword 部分对此主题进行了很好的讨论。
【问题讨论】:
-
“嵌套数据类型”有时用于高级数据结构需要显式类型信号。
-
@stephen 我会把它添加到我的学习清单中。可以举个简单的例子吗?
标签: types type-inference haskell