为什么此代码会导致“模糊变量发生”错误?

时间:2012-04-25 11:53:59

标签: haskell syntax

我写了一个名为product的函数:

product [] = 1
product (x:xs) = x * product xs

当我将其加载到WinHug中时:

  

错误文件:。\ product.hs:4 - 模糊变量发生“产品”
  ***可以参考:Main.product Hugs.Prelude.product

这是什么意思?

2 个答案:

答案 0 :(得分:15)

product函数为defined in the Haskell Prelude.

您的本地定义与库版本冲突。

考虑将您的版本重命名为myproductimport Prelude hiding (product)

另外,您可能需要考虑using GHC instead of Hugs.

答案 1 :(得分:8)

product中已有一个名为Haskell Prelude的函数。

顺便说一下,你应该安装Haskell Platform而不是Hugs; Hugs是一个不再被维护的旧项目,GHC / i得到更好的支持并具有更多功能。即使你的学校希望你使用Hugs,私下秘密使用Haskell平台和GHCi也没什么坏处。