The character must not be fictitious and may appear in the when clause. For example, your function may be rewritten:
let rec fact = function
| n when n < 2 -> 1
| n -> n * fact (n - 1)
Here, since we use anonymous pattern matching with function, rather than match ... with, the identifier really matters.
,
match p with
| i,j when i < j -> true
| _ -> false
, when, , when - .
, , , _, :
let rec fact n =
match n with
| _ when n < 2 -> 1
| _ -> n * fact (n - 1)