Haskell 创建中缀运算符

Haskell 创建中缀运算符,haskell,infix-notation,non-exhaustive-patterns,Haskell,Infix Notation,Non Exhaustive Patterns,我遇到了一个似乎无法解决的小问题,我已经做了几个小时了,但都没有用 我已经定义了一个数据类型,Hand data Hand = Empty | Add Card Hand deriving (Eq, Show) 我正在使用的另一种类型: data Card = Card { rank :: Rank, suit :: Suit } deriving (Eq, Show) 我正在尝试创建一个中缀操作符,它将添加两只手并返回第三只手 (<+) :: Hand

我遇到了一个似乎无法解决的小问题,我已经做了几个小时了,但都没有用

我已经定义了一个数据类型,Hand

data Hand = Empty | Add Card Hand
        deriving (Eq, Show)
我正在使用的另一种类型:

data Card = Card { rank :: Rank, suit :: Suit }
        deriving (Eq, Show)
我正在尝试创建一个中缀操作符,它将添加两只手并返回第三只手

(<+) :: Hand -> Hand -> Hand
(<+) (Add c1 h1) (empty) = (Add c1 h1)
(<+) hand1 (Add c2 hand2) = (Add c2 (hand1 <+ hand2))
(手->手

empty/=empty
。此外,您的左参数可以是空的,并且与之不匹配。您不会处理双手都是
空的情况,而不是发布一张图片。复制文本并将其粘贴到问题的代码块中。实际上,1)更容易阅读2)我们可以复制并粘贴其中包含的代码。在这种情况下,这并不重要,但在其他情况下,这确实重要。(另外:标题不应该包含标记,错误消息最好在代码块中格式化)。如果您使用
-Wall
进行编译,编译器会告诉您有非穷举模式。故事的寓意:永远使用
-Wall
BlackJack.hs:(71,1)-(72,53): Non-exhaustive patterns in function <+