エラーの種類

構文のエラー

構文がおかしいとき。

# let x 3 ;;
Error: Syntax error

変数を宣言してるのに「=」がない。「;;」にアンダーラインが現れる。
他にも、if文でthenが無いとか、()の対応がおかしい場合はこれ。

未定義の変数

# 3 + a ;;
Error: Unbound value a

定義してない変数を使うと、当然怒られる。
また、「let」を「lat」みたいに恥ずかしい感じにすると「lat」という変数と解釈されて
同様のエラーになる。

型エラー

# 3 + 2.5 ;;
Error: This expression has type float but is here used with type int

int + floatのように型が合ってない場合。
当然、「3.0 + 2.5」も同様に怒られる。

以下、関数に渡す引数の数が正しくない時の怒られ方。

# calcBMI 1.7 65 100 ;;
Error: This function is applied to too many arguments,
maybe you forgot a `;'

実行時のエラー

プログラムの構文としては問題ないけど、実行を継続できない場合。

# 3 / 0 ;;
Exception: Division_by_zero.

「Exception」なので、厳密にはエラーではなく「例外」

論理的なエラー

そもそも、アルゴリズムが間違ってる場合。
この場合は、エラーが出ないということもあるので注意が必要。


いまのところ、私的に多いのは「型エラー」ですかね。
floatを返す関数funに対して

if fun x < 18

のような条件をよく書いてしまい怒られるのです。


まだ、型をちゃんと意識できてないんだろうなー。