代数的データ型
それぞれの代数的データ型の値には、1個以上のコンストラクタがあり、各コンストラクタには0個以上の引数がある
再帰的な宣言もできる
code:ocaml
type node = Leaf of int | Branch of node * node
総和を分解しながら処理を記述できる
code:ocaml
let rec depth tree = match tree with
Leaf _ -> 1
| Branch (a, b) -> 1 + max (depth a) (depth b)