此表达式不正确。
f = show
然而,在 ghci 中这是合法的
let f = show
此外,其类型更改为
() -> String
对这种现象有什么解释吗?
答案 0 :(得分:6)
ghci 提示的行为就像启用了ExtendedDefaultRules
扩展程序一样。
特别是这意味着:
单位类型()被添加到标准类型列表的开头 在进行类型默认时会尝试这些。
因此,要从源文件中获取相同的行为,请使用-XExtendedDefaultRules
进行编译,或将{-# LANGUAGE ExtendedDefaultRules #-}
添加到文件的顶部。