ここでは、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