matchとwhen

garrigue先生の授業で聞いたやつ。
今まで知らなかったし、ざっと検索したかぎりでは資料が見つからなかった構文。

let rec subst env e = 
  match e with
  | Var x when List.mem_assoc x env -> Num (List.assoc x env)
  | e -> map_expr (subst env) e;;

かけ算と足し算と変数が扱えるミニ言語の一部。
このmatch withの条件部で、whenを使う事で条件を細かく指定できるらしい。