ocaml中两个参数的模式匹配

pattern matching on two arguments in ocaml

我想知道如何在 ocaml 中匹配两个参数。

我有一个接受两个元组的函数:

let time a b = ...;;
time (34, 4)(5, 6);; // function call

我如何访问第一个元组中的第一项并将其与第二个元组中的第一项相加?谢谢!

let time (a, _) (b, _) = a + b;;

或者,解构函数参数之外的任何绑定:

let time a b = 
  let a', _ = a in
  let b', _ = b in
  a' + b'

一般来说,您会发现大多数模式看起来与您构建值的方式完全一样。这样很方便。

除了@glennsl 的回答,您可能会发现 as 有用。

let time (a', _ as a) (b', _ as b) = 
  (* ... *)

这让您可以解构两个元组,但为每个元组绑定一个名称。