let rule1 m =
m = m/2;
m
rule1(250)应该返回125而是返回250。
如何返回参数的更新值?
你确定m
是可变的?该m = ..
语句不会更新提供的参数。返回更新的值是一种选择吗?
let rule1 m =
m/2
如果您真的希望更改绑定的值,则该绑定必须是ref
具有可变字段的 a 或记录类型(aref
是使用方便的语法糖的一个具体示例。)
let m = ref 12 in
(m := !m / 2;
print_int !m;
print_newline ())
但是,使用像这样的可变状态可能意味着您正在编写非惯用的 OCaml 代码,并且您缺少一些东西:或者更优雅的解决方案,或者在学习的情况下,算法课程的重点。
当然,或者通常两者兼而有之。我从个人经历说。