List OCaml如何操作元组?

List OCaml如何操作元组?,list,ocaml,tuples,List,Ocaml,Tuples,假设我有一个元组: let x = (1,3) 我只想在元组的第一个值上加1。我该怎么做?您可以使用模式匹配来解构元组,然后构建更新后的元组: let (x1, x2) = x in (x1 + 1, x2) 模式匹配是一个典型的习语。另一种方法是使用fst和snd: # let x = (1,3);; val x : int * int = (1, 3) # let y = (fst x + 1, snd x);; val y : int * int = (2, 3) 正如Andreas

假设我有一个元组:

let x = (1,3)

我只想在元组的第一个值上加1。我该怎么做?

您可以使用模式匹配来解构元组,然后构建更新后的元组:

let (x1, x2) = x in (x1 + 1, x2)

模式匹配是一个典型的习语。另一种方法是使用
fst
snd

# let x = (1,3);;
val x : int * int = (1, 3)
# let y = (fst x + 1, snd x);;
val y : int * int = (2, 3)

正如Andreas Rossberg的回答所指出的,您只能构建一个新的对,因为对的类型已经定义为不可变。如果您真的想更新一个将被更改的值的第二个组件,那么您必须为这些可变对定义一个类型,并将第一个组件指定为可变的,例如使用
type('a,'b)pair={mutable a:'a;b:'b}
。然后你可以做
让x={a=1;b=3}
x.a