Просто добавьте некоторые подробности о синтаксисе - ключевое слово function
создает функцию, которая принимает аргумент (неявно, не называя его), а затем позволяет сопоставить шаблон с этим значением.
Естьдовольно много эквивалентных способов сделать это - используя function
как описано в ildjarn:
let rec factorial = function
| 0 -> 1
| n -> n * factorial (n - 1)
Вы также можете объявить factorial
как функцию, принимающую n
, а затем использовать match
:
let rec factorial n =
match n with
| 0 -> 1
| n -> n * factorial (n - 1)
И для полноты вы можете также создать функцию, используя fun
(это более простая версия function
, которая не дает вам возможности написать несколько случаев сопоставления с образцом):
let rec factorial = fun n ->
match n with
| 0 -> 1
| n -> n * factorial (n - 1)
Первые два варианта - идиоматический код F #, второй - немного более сложный (без веской причины), поэтому я бы предпочел один из первых двух.