Haskell は数値の型を合わせないと計算出来ません。それは他の言語も同じですが、 Haskell には型推論があるため、変換しようとする型を直接指定するのでなく、中間としてジェネリックな型を指定して、あとは Haskell におまかせするというようなイメージです。 (参考:Real World Haskell p153 表6-4 数値間の変換) また、コンパイラが勝手にキャストとするということはありません。 整数(Int、Integer)の型が違う場合は fromIntegral を使って Num にして型を合わせてから計算する。 fromIntegral は Integral型からNum型に変換する関数です。 ghci> (fromIntegral (2::Int)) + 3::Integer --> 5 ghci> :t fromIntegral fromIntegral :: (