【发布时间】:2014-01-19 01:31:24
【问题描述】:
使用Trees 并定义一个新的“Eq”我得到一个"Ambiguous class occurrence 'Eq' *** Could refer to: Hugs.Prelude.Eq Main.Eq".
我知道我正在尝试为前奏的现有 Eq-Class 添加一个新定义,但我不想使用导入前奏隐藏 (Eq),因为我的新相等使用的是“ ==" 用于数字类型。运算符被称为“=+”,因为它不是一个真正的相等(我认为它已经通过派生“加载”了),而只是一个结构相等。
data Tree = Nil | Node Int Tree Tree deriving (Eq, Ord, Show)
instance Eq Tree where
Nil =+ Nil = true
(Node a tl1 tr1) =+ (Node b tl2 tr2) = (a==b) && (tl1==tl2) && (tl1==tl2)
如果有任何建议,我将不胜感激。
【问题讨论】:
-
你确定你需要这个吗?为什么你不能简单地使用派生的
Eq实例,它基本上等同于你的自定义实例(除了缺少的情况Nil =+ Node ...,如果你保持它们未定义,它将使你的程序崩溃)。==不是 Java 中的“指针标识”,以防万一。