From: Atsushi Igarashi <.....@sato.kuis.kyoto-u.ac.jp>
To: .....@sato.kuis.kyoto-u.ac.jp
Subject: report 0, xxxxxx

(* Ex. 0.4: 階乗を計算する関数 fact を定義する*)

let rec fact n =
  if n = 0 then 1       (* 0! = 1 *)
  else n * fact (n-1);; (* n! = n * (n-1)! *)

(* 実行例:

# fact 5;;
- : int = 120
# fact 0;;
- : int = 1

*)

(* 考察:

階乗の定義を再帰的に見直すことができれば,コーディング自体は
簡単だった.ただし n が負の時は無限ループする.
このように入力が適正でない場合に無限ループする,という挙動は
悲しい.エラーメッセージを出して終了とかできると嬉しい.

感想・愚痴: 自分にはどうも let の後の rec を打ち忘れてしまう
癖があるようだ.fact を定義するときに Unbound value fact
と言われるとなんだか悔しい.

*)

(* Ex. 0.5: ..... *)

.....