Haskell:模式3中的解析错误

问题描述:

data Peg = Red | Green | Blue | Yellow | Orange | Purple 
    deriving (Show, Eq, Ord) 

type Code = [Peg] 

data Move = Move Code Int Int 
     deriving (Show, Eq) 

isConsistent :: Move -> Code -> Bool 
isConsistent (move1 code1 num1 num2) code2 = True --parse error here 

Haskell相对较新。想知道为什么我在尝试加载后收到以下错误消息。Haskell:模式3中的解析错误

Parse error in pattern: move1 

move1不是数据的构造函数(这是你被允许以什么模式匹配的),实际上它不能,因为他们不得不开始用大写字母。从数据声明中将其替换为构造函数Move,错误应该消失。

您可能仍会收到一些警告,如“code1已定义但未使用”,如果您真的不关心内容,则可以通过将模式更改为(Move _ _ _)来摆脱它们。

+4

请注意,如果您需要一个值来引用正在匹配模式的整个片段,则在其前面加上“name @”,例如:move1 @(Move code int1 int2)'。现在move1指的是整个Move。 – Carcigenicate 2015-02-11 00:37:46