dictionary - 在 Ocaml 中映射为全局变量

标签 dictionary global-variables ocaml

我有一个关于将 map 作为全局变量操作的问题。在我的文件的开头,我有:

module IntOrd = struct type t = int let compare = ( - ) end
module IntMap = Map.Make( IntOrd )

然后我想通过let Variables = IntMap.empty声明一个全局变量,那么这个文件中的一些函数中variables就会被修改。例如,在函数 letanalyze (p: s_program) : unit = 中,我想用 p 中的一些值填充变量。但我不知道该怎么做,因为我似乎无法再修改 variables 了; IntMap.add : key -> 'a -> 'a t -> 'a t 也不起作用,因为它不会直接更改值。

我必须将这个全局变量作为引用吗?

有人可以帮忙吗?非常感谢

最佳答案

好吧,你已经回答了你自己的问题:)。您希望它是一个变量。 Ocaml 是函数式的,let x = ... 不声明变量(它是常量绑定(bind));要获取变量,您需要进行引用。然后你确实可以在你的函数中修改它,如下所示:

variables := IntMap.add foo bar !variables

关于dictionary - 在 Ocaml 中映射为全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6563296/

相关文章:

python - 用使用静态全局变量的 SWIG 包装 C 代码

javascript - 在全局 Javascript 变量中保存临时表单信息

ocaml - 更改 utop 输出宽度

java - 将 map 拆分为两个列表

python - 如何将dict的dict转换为指定格式的dict?

javascript - 在事件期间将值保存到全局变量中以供以后使用

ocaml - 为什么 Array.map 比尾递归映射(相当)快?

ocaml - ocaml utop 中的 show_module 乏味

python - 如何更新 python 列表中的值?

c++ - 如何将起始地址分配给 map<pair<long long int,long long int>,long long int > 的迭代器