所以我有一个类似的数据类型:
data Token = NUM Int | ID String | EOF
我有一个类似的功能:
doStuff list = let
(token, rest) = getToken list
in
....
那么我想在
...中做什么部分是测试我得到的 token 是否是
NUM或
INT或
EOF .我可以说
token==EOF测试这种情况,但我想不出一种方法来测试 token 是否是
NUM或
INT使用条件,因为
token==(NUM n)和
token==NUM两者都会导致错误。我知道我可以编写一个辅助函数来完成
... 中的内容。并利用模式匹配,但这确实损害了我正在做的事情的可读性,似乎应该有一种方法来进行此检查。有谁知道怎么做?
请您参考如下方法:
你想要一个 case表达式,例如:
case token of
NUM n -> foo n
ID s -> bar s
_ -> hoho
如果您单独定义一个函数,这与您将获得的模式匹配类型相同。




