当我试图检查表达式的计算结果是否为 Cons _ _ 形式时,以下 Haskell 代码在最后第二行抱怨。Haskell 的错误消息是:“表达式上下文中的模式语法:_” - 我想知道的是 - 有没有办法完成我想要做的事情???看来我要做的是在运行时检查表达式的类型,从我所读的内容来看,这可能意味着我可以更好地编程?但是,由于我是初学者,我不知道这是否是我正在做的事情,尤其是因为我在过去一个小时内一直在尝试这样做。
data Val = Num Int | Nil | Cons Val Val
deriving (Eq, Show, Read)
interpret_expr :: Prog -> Vars -> Expr -> Val
interpret_expr _ _ (Isnum NilE) = Num 0
interpret_expr _ _ (Isnum (ConsE _ _)) = Num 0
interpret_expr _ _ (Isnum (NumE _)) = Num 1
interpret_expr prog vars (Isnum expr)
| interpret_expr prog vars expr == Nil = Num 0
| interpret_expr prog vars expr == Cons _ _ = Num 0
| otherwise = Num 1