akasaka_34の日記

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

Haskellのポリモーフィズムと型推論

Haskellで

main = putStrLn $ show Nothing

こうするとエラーになる。
たとえばJust 0ならMaybe IntでJust "one"ならMaybe Stringって分かるけど
NothingはMaybeだってことしか分からないから駄目なのだろう。
どのみち結果は"Nothing"なんだからいーじゃねーかよと思わなくもないけど。

そして

main = putStrLn $ show (Nothing == Nothing)

これも同じくエラー。

でも

f 0 = Nothing
f 1 = Just "one"
main = putStrLn $ show ((f 0) == Nothing)

これはちゃんとTrueが出てくるんだよね。

Haskellは面白いね。