Dictionary 如何在main.ml文件中使用此字典(创建字典、添加元素、删除…)?

Dictionary 如何在main.ml文件中使用此字典(创建字典、添加元素、删除…)?,dictionary,ocaml,Dictionary,Ocaml,我找到了一本词典的实现和你的实现。我想使用下面的模块创建字典,但出现以下错误: 未绑定值 我不熟悉功能范式。我试过这本书,但还是迷路了: 及 字典和关联列表,从这里开始: 让x=Dictionary.AssocList.create;; 打开Dictionary.AssocList environment=create() 未绑定类型构造函数stringAssocListAssocList 模块类型字典= 信号 (*a dict是从字符串到a的映射。 我们为字典写{k1->v1,k2->v2,…

我找到了一本词典的实现和你的实现。我想使用下面的模块创建字典,但出现以下错误:

未绑定值

我不熟悉功能范式。我试过这本书,但还是迷路了:

及 字典和关联列表,从这里开始:

让x=Dictionary.AssocList.create;;
打开Dictionary.AssocList
environment=create()
未绑定类型构造函数stringAssocListAssocList
模块类型字典=
信号
(*a dict是从字符串到a的映射。
我们为字典写{k1->v1,k2->v2,…}
将k1映射到v1、k2映射到v2等。*)
类型键=字符串
键入一个dict
(*创建一个包含“a值”的空字典*)
val make:单位->一条命令
(*在字典中插入键和值*)
val insert:'a dict->key->'a->'a dict
(*返回键在字典中映射到的值。
*如果没有键的映射,则引发NotFound。*)
val查找:'a dict->key->'a
未找到异常
(*将函数应用于字典的所有元素;
i、 例如,如果字典d将字符串s映射到元素a,
然后字典(映射fd)将s映射到f(a)。*)
val映射:('a->'b)->'a dict->'b dict
结束
模块关联列表:字典=
结构
类型键=字符串
键入'a dict=(键*'a)列表
(*AF:list[(k1,v1),(k2,v2),…]表示字典
*{k1->v1,k2->v2,…},除非出现键
*在列表中多次出现,只有最早的一个才重要。
*李:是的。
*)
让make():'a dict=[]
让我们插入(d:“一条命令”)(k:键)(x:“a:”一条命令=
(k,x)::d
未找到异常
let rec lookup(d:'a dict)(k:key):'a=
匹配
|[]->未找到提升
|(k',x)::其余->
如果k=k’,那么x
其他查找RESTK
让我们映射(f:'a->'b)(d:'a dict)=
List.map(fun(k,a)->(k,f a))d
结束

假设字典实现保存在名为
dictionary.ml的文件中。要使用此模块,您需要
打开它,并为
AssocList
提供一个较短的名称,以方便使用(可选)

打开字典
模块D=关联列表
要创建新的空词典,您将执行以下操作:

让dict=D.make()
要插入元素并从中生成新的dict,您将执行以下操作:

让new_dict=D.插入dict“one”1
“一”
是键,
1
是值

如果您想查看字典中的所有元素,则必须创建一个新函数,或使
(key*'a)列表
类型可用,类似于签名中的内容

键入'a dict=(键*'a)列表(*这将使dict元素可用*)
键入'a dict(*这将使dict可用,但您无法查看元素*)

我对您的问题进行了编辑,以使其更具意义。请检查一下,以确保我没有弄错。(我不知道“impletantion”是什么意思…)不,等等,“未绑定类型构造函数stringAssocList”是一条错误消息,对吗?@NisseEngström我认为其中有多余的
stringAssocList