こんばんは。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 []パターンマッチが網羅的では無いのですが、具体的にどう書けば良いか分かりませんでした。
どう書けば網羅的になるのか、ご教示いただけると嬉しいです。よろしくお願いいたします。