y
в match tmp with y -> y | m -> m
является (новой) переменной.Таким образом, оно соответствует любому значению.
Попробуйте оценить это выражение:
(fun x -> match x with y -> y + 1 | w -> w + 2) 3;;
Результат равен 4
: x
связывается с 3
при применении функции;3
соответствует переменной y
;и, наконец, подвыражение y + 1
оценивается как 4 в контексте [ x = 3; y = 3]
.
Подвыражение if tmp=y then y else tmp
эквивалентно просто tmp
.
Почему вы хотите создать паттернсовпадать с целым числом?Что ваша функция должна делать?