单态限制,ghci和let表达

时间:2014-06-29 14:26:38

标签: haskell

此表达式不正确。

f = show

然而,在 ghci 中这是合法的

let f = show

此外,其类型更改为

() -> String

对这种现象有什么解释吗?

1 个答案:

答案 0 :(得分:6)

ghci 提示的行为就像启用了ExtendedDefaultRules扩展程序一样。

特别是这意味着:

  

单位类型()被添加到标准类型列表的开头   在进行类型默认时会尝试这些。

因此,要从源文件中获取相同的行为,请使用-XExtendedDefaultRules进行编译,或将{-# LANGUAGE ExtendedDefaultRules #-}添加到文件的顶部。