Return OCAML 中参数的更改值

Return Changed value of Parameter in OCAML

let rule1 m = 
    m = m/2;
    m

rule1(250) 应该 return 125 而不是 returns 250 .

如何return更新参数值?

你确定 m 是可变的吗? m = .. 语句不会更新提供的参数。返回更新后的值是一种选择吗?

let rule1 m = 
    m/2

如果您真的希望改变绑定的值,该绑定必须是 ref 或具有可变字段的记录类型(ref 是 with 的一个具体示例方便的语法糖。)

let m = ref 12 in
  (m := !m / 2;
   print_int !m;
   print_newline ())

但是,像这样使用可变状态可能意味着您正在编写非惯用的 OCaml 代码,并且您缺少一些东西:更优雅的解决方案,或者在学习的情况下,算法课。

当然,通常两者都是。我说的是亲身经历。