我是一个非常新手的 OCaml 程序员,所以如果这是一个愚蠢/明显的问题,请原谅我。有很多东西要吸收,我可能在文档中错过了这一点。
我有一个开始看起来像这样的代码库:
let update_x p x =
add_delta p;
p.x <- x;
refresh p
let update_y p y =
add_delta p;
p.y <- y;
refresh p
let update_z p z =
add_delta p;
p.z <- z;
refresh p
重复开始困扰我,因为我想写这样的东西:
let update_scalar p scalar value =
add_delta p;
magic_reflection (p, scalar) <- value;
refresh p
这样,当我更新 x 时,我可以简单地调用:
update_scalar p 'x' value
这调用了“宏!” 对我来说,但我不相信 OCaml 有一个宏系统。我还可以做些什么?