基本Haskell函数中的非穷举错误

1 haskell boolean non-exhaustive-patterns

我是Haskell的新手并尝试组合一个简单的函数来检查两个数字是否相等.这是编译,但是当我尝试对程序进行测试时,它说这不是详尽无遗的.我不明白它如何用布尔函数非穷举?提前致谢:

data Value = ConstInt Int
           | Numequal Value Value
           | Ctrue Bool
           | Cfalse Bool
            deriving (Read, Show)
eval:: Value -> Bool

eval (Numequal e1 e2) =
   let x = eval e1
       y = eval e2
         in case (x, y) of
            (i1, i2)  -> 
                if x == y
                then False
                else True
Run Code Online (Sandbox Code Playgroud)

Dan*_*Dan 5

你还没有完成你的eval功能.例如,假设我打电话eval (ConstInt 34).应该归还什么?

另外,想想你的功能正文中有什么.eval返回一个布尔值,这样既xy将布尔和你测试,看看它们是否相等.那是你要的吗?