パターンマッチ

入力、つまり関数のパラメータが組、レコード、リストのような構造データになるとそのデータの各要素にアクセスする必要があります。

C#なら、プロパティ、メソッド、インデクサとか、リストならイテレートして走査していくわけですが、OCamlは違うみたいです。
(レコードに関してはプロパティっぽくアクセスもできるけど..)

そこで必要になってくるのがパターンマッチということです。

構文

match  with
  パターン -> 

おお、矢印ですね、C#ラムダ式っぽくて好きです。

組へのパターンマッチ

# let f point = match point with
   (x, y) -> "point x:" ^ string_of_int x ^ " y:" ^ string_of_int y;;
val f : int * int -> string = <fun>
# f (5, 10);;
- : string = "point x:5 y:10"

う〜ん、なんかすごく下らないサンプルですね。
2点間の距離とか計算させようとしたんですが、眠いのであきらめます。。