Символ не должен быть фиктивным и может появляться в предложении when.Например, ваша функция может быть переписана:
let rec fact = function
| n when n < 2 -> 1
| n -> n * fact (n - 1)
Здесь, поскольку мы используем анонимное сопоставление с function
вместо match ... with
, идентификатор действительно имеет значение.
Часто вы будете использовать более сложный шаблон, такой как
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)