如何在OCaml中保存和更改变量的值?

如何在OCaml中保存和更改变量的值?,ocaml,variable-assignment,mutation,Ocaml,Variable Assignment,Mutation,这可能是一个非常新的问题,但我没有找到答案。 例如,我需要在同一指针下存储一个列表,然后用另一个替换。可以通过以下方式完成: 您不经常看到引用,因为您可以在递归或高阶函数中使用不可变值执行相同的操作: let fact n = let rec loop i acc = if i > n then acc else loop (i+1) (i*acc) in loop 2 1 首选无副作用的解决方案,因为它们更容易推理,更容易确保正确性。谢谢。你能解释一

这可能是一个非常新的问题,但我没有找到答案。 例如,我需要在同一指针下存储一个列表,然后用另一个替换。

可以通过以下方式完成:

您不经常看到引用,因为您可以在递归或高阶函数中使用不可变值执行相同的操作:

let fact n =
   let rec loop i acc =
      if i > n then acc
      else loop (i+1) (i*acc) in
   loop 2 1

首选无副作用的解决方案,因为它们更容易推理,更容易确保正确性。

谢谢。你能解释一下参考文献0的含义吗?请看我在回答中提到的链接。基本上,
ref 0
是一条记录,
{mutable contents:int}
,其内容由
0
初始化,
内容
可在以后重新分配。
let fact n =
   let rec loop i acc =
      if i > n then acc
      else loop (i+1) (i*acc) in
   loop 2 1