次の Haskell コードは、式が Cons _ _ の形式に評価されるかどうかを確認しようとしているときに、最後の 2 行目でエラーを出します。Haskell のエラー メッセージは次のとおりです。「式コンテキストのパターン構文: _」私がやろうとしているのは、実行時に式の型をチェックすることです。これは、私が読んだことから、これをより適切にプログラミングできる可能性が高いことを意味しますか? しかし、私は初心者なので、それが私がやっていることなのかどうかはわかりません。特に、約 1 時間前からこれをやろうとしているからです。
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