No instance for Eq



我有一个自定义的数据类型Point Int,我需要将其与另一个Point-Int(带有elem函数(进行比较。你能告诉我如何为这种数据类型编写Eq实例吗?谢谢

type Result = [String]
data Point = Point Int Int
-- missing Eq instance
data Line = Line Point Point
drawField :: [Point] -> (Int, Int) -> Result
drawField positions (width, height) = let
check coordinates | elem coordinates positions = '#'
| otherwise = '.'
in [[check (Point rows cols) | cols <- [0..width-1]] | rows <- [0..height-1]]

如果两个Point相等,如果所有参数在元素上相等,那么您可以让Haskell用派生Eq实例

data Point = Point Int Intderiving Eq

如果在更复杂的测试成功的情况下,这些点是相等的,那么您可以使用定义自己的Eq实例

instance Eq Point where
Point xa ya == Point xb yb = …

其中CCD_ 4是以CCD_。

最新更新