如何在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