CやSchemeでは型のチェックがゆるいので、明示的にキャストしなくても整数と実数の足し算ができたりする。あるいは、整数を文字や真偽値として解釈したりできる。Standard MLやHaskellなど、型チェックが厳密な言語では、明示的にキャストしないとこのようなことはできない。これにより、プログラマの意図しない計算にはコンパイル時にきちんとエラーを出すことが可能になる。 (* Standard ML *) - 1+1.0; stdIn:2.1-2.6 Error: operator and operand don't agree [literal] operator domain: int * int operand: int * real in expression: 1 + 1.0 - ;; Scheme ;; gosh> (+ 1 1.0) 2.0 gosh> しかし、型チェッ