所以我有一个类似的数据类型:

data Token = NUM Int | ID String | EOF 

我有一个类似的功能:
doStuff list = let 
       (token, rest) = getToken list 
   in 
       .... 

那么我想在 ...中做什么部分是测试我得到的 token 是否是 NUMINTEOF .我可以说 token==EOF测试这种情况,但我想不出一种方法来测试 token 是否是 NUMINT使用条件,因为 token==(NUM n)token==NUM两者都会导致错误。我知道我可以编写一个辅助函数来完成 ... 中的内容。并利用模式匹配,但这确实损害了我正在做的事情的可读性,似乎应该有一种方法来进行此检查。有谁知道怎么做?

请您参考如下方法:

你想要一个 case表达式,例如:

case token of 
    NUM n -> foo n 
    ID s  -> bar s 
    _     -> hoho 

如果您单独定义一个函数,这与您将获得的模式匹配类型相同。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!