В OCaml какой канонический способ сопоставления с несколькими аргументами функции?

Вы можете выполнять поиск по образцу для нескольких аргументов функции, создавая кортеж и затем деструктурируя его в выражении match:

let f x y =
  match x, y with
  | pattern1 -> expr1
  | ...

Альтернативно, если вам не нужна функция curried, вы можете сделать это, заставив f принимать кортеж в качестве единственного аргумента:

let f (x, y) = function
  | pattern1 -> expr1
  | ...

Преимущество последнего метода в том, что вам не нужно дважды писать аргументы каждый раз, когда вы определяете функцию. Но функции, принимающие кортеж, похоже, не так популярны, как curried-функции.

Так какой из этих двух методов считается каноническим, или предпочтительным, в сообществе OCaml?

EDIT: Как указал pad ниже, я имею в виду let f = function blah blah во втором фрагменте кода.

9
задан Pteromys 27 November 2011 в 14:39
поделиться