Когда я впервые посмотрел на использование ключевого слова function
в OCaml, у меня сложилось впечатление, что это был синтаксический сахар для удаления строки match x with
для сопоставления с образцом.
Однако я вижучто между ними есть разница в подписи, как в примере ниже.При каких обстоятельствах вы хотите использовать пример function
?
type e = Foo | Bar
let eval1 exp =
match exp with
| Foo -> "Foo"
| Bar -> "Bar"
let eval2 exp = function
| Foo -> "Foo"
| Bar -> "Bar"
Первая функция имеет подпись val eval1 : e -> bytes = <fun>
Вторая функция имеет подпись val eval2 : 'a -> e -> bytes = <fun>