akasaka_34の日記

ネトウヨと呼ばれた男の日記。しかし頻度から言えば週報ぐらい。

Haskellのパターンマッチングにできる事とできない事

main = do putStrLn $ f 0; putStrLn $ f '/';
f :: Show x => x -> String
f x = show x

これは問題なく動いて

0
'/'

を出力する。

だけど

main = do putStrLn $ f 0; putStrLn $ f '/';
f :: Show x => x -> String
f 0 = "zero"
f x = show x

はコンパイルが通らない。

EqはNum同士やChar同士でないと比較できないからなんだと思うけど
どうせ型が違えば値は一致しないに決まってるんだから
「うむ、よきにはからえ」
って言って済ませたいんだけどなー。