こんばんは。Haskellで以下の振る舞いをするコードを書こうとしています。
そこで以下のようなコードを書いてみました。
これでも(おそらく)正しく動いているのですが、VSCode上で以下のように注意されます。
パターンマッチが網羅的では無いのですが、具体的にどう書けば良いか分かりませんでした。
どう書けば網羅的になるのか、ご教示いただけると嬉しいです。よろしくお願いいたします。
ghci> Val 1 1 ghci> Var 2 3 x 23 ghci> Plus [Val 1, Var 2 3] (+ 1 x23)
そこで以下のようなコードを書いてみました。
data Exp = Var Int Int | Val Int | Plus [Exp] instance Show Exp where show (Var i j) = "x" ++ show i ++ show j show (Val n) = show n show (Plus (exp1:exp2:exp)) = "(+" ++ " " ++ show exp1 ++ " " ++ show exp2 ++ ")"
これでも(おそらく)正しく動いているのですが、VSCode上で以下のように注意されます。
Pattern match(es) are non-exhaustive In an equation for 'show': Patterns not matched: Plus [(Var _ _)] Plus [(Val _)] Plus [(Plus _)] Plus []
パターンマッチが網羅的では無いのですが、具体的にどう書けば良いか分かりませんでした。
どう書けば網羅的になるのか、ご教示いただけると嬉しいです。よろしくお願いいたします。