Map 映射为Ocaml中的全局变量

Map 映射为Ocaml中的全局变量,map,global-variables,ocaml,Map,Global Variables,Ocaml,我有一个关于将贴图作为全局变量进行操作的问题。在我的文件开头,我有: module IntOrd = struct type t = int let compare = ( - ) end module IntMap = Map.Make( IntOrd ) 然后我想通过let variables=IntMap.empty声明一个全局变量,然后在该文件的某些函数中修改变量。例如,在函数let analyze(p:s_程序):unit=中,我想用p中的一些值填充变量。但是我不知道怎么做,因为我似

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

module IntOrd = struct type t = int let compare = ( - ) end
module IntMap = Map.Make( IntOrd )
然后我想通过
let variables=IntMap.empty
声明一个全局变量,然后在该文件的某些函数中修改
变量
。例如,在函数
let analyze(p:s_程序):unit=
中,我想用
p
中的一些值填充
变量。但是我不知道怎么做,因为我似乎不能再修改变量了
IntMap.add:key->'a->'a t->'a t
也不起作用,因为它不会直接更改值

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


有人能帮忙吗?非常感谢

是的,如果您想修改地图,您必须将其作为参考。然后您可以使用
变量:=IntMap.add foo bar来更改它!变量

嗯,你回答了你自己的问题:)。您希望它是一个变量。Ocaml是功能性的,
让x=…
不声明变量(它是一个常量绑定);要获得一个变量,您需要创建一个引用。实际上,您可以在函数中修改它,如中所示:

variables := IntMap.add foo bar !variables

请不要因为我的名声就认为我的回答是邪恶的;)好您和@sepp2k都回答了我的问题,因为您可能需要这笔信用来建立您的声誉。。。我将您的答案设置为已接受的答案:-)