1.1 基本

ここでは、OCaml の対話式システムを使用して Caml の概要を説明します。Unix シェルでは ocaml で起動します。Windows では OCamlwin.exe で起動します。ユーザの入力には行頭に # をつけて、システムの返答には行頭に # をつけずに表記します。

対話式システムでは、ユーザの入力文が ;; で区切られます。システムはその入力文をその場でコンパイルし、実行し、評価の結果を表示します。文は単純な式か、識別子の let 定義式 (値か関数) です。

#1+2*3;;
- : int = 7

#let pi = 4.0 *. atan 1.0;;
val pi : float = 3.14159265359

#let square x = x *. x;;
val square : float -> float = <fun>

#square(sin pi) +. square(cos pi);;
- : float = 1.
    

Caml システムはそれぞれの文に対して値と型の両方を計算するので、関数の引数であっても、明示的な型の宣言は必要ありません。システムが引数の扱われ方からその引数の型を推論します。整数と浮動小数点数は異なる型なので、演算子も異なることに注意してください。+* は整数同士を計算して整数を返し、+.*. は浮動小数点数同士を計算して浮動小数点数を返します。

#1.0 * 2;;
This expression has type float but is here used with type int
    

再帰的な関数は let rec で定義します。

#let rec fib n =
  if n < 2 then 1 else fib(n-1) + fib(n-2);;
val fib : int -> int = <fun>

#fib 10;;
- : int = 89