如何将StringMap转换为OCaml中的列表?
我对OCaml非常陌生,正在尝试将StringMap转换为OCaml中的列表 该地图是根据以前的列表生成的如何将StringMap转换为OCaml中的列表?,ocaml,ocamllex,Ocaml,Ocamllex,我对OCaml非常陌生,正在尝试将StringMap转换为OCaml中的列表 该地图是根据以前的列表生成的 let map = List.fold_left(<SOME CODE HERE, WHICH I AM OMITTING> ) StringMap.empty in StringMap.fold(fun w c newlist -> (c,w)::newlist) map[] 让map=List.fold\u向左( )StringMap.empty 在
let map = List.fold_left(<SOME CODE HERE, WHICH I AM OMITTING>
) StringMap.empty
in StringMap.fold(fun w c newlist -> (c,w)::newlist) map[]
让map=List.fold\u向左(
)StringMap.empty
在StringMap.fold中(fun w c newlist->(c,w)::newlist)map[]
上面代码的最后一行给出了以下错误:
此表达式的类型为StringMap.key list->int StringMap.t
但需要类型为的表达式
'a StringMap.t='a Map.Make(String.t
请注意:这段代码被输入到一个ocamlex文件(.mll)中,当我试图执行生成的词法分析器(.ml)文件时,会出现这个错误
为什么我会犯这个错误?我如何让我的代码工作
谢谢 错误告诉您,
map
值的类型为StringMap.key list->int-StringMap.t
,这意味着它是一个函数,而不是您所期望的映射。此外,函数签名告诉您上一个表达式中缺少了什么,以便按预期获得int StringMap.t
:您需要向调用List.fold__left
,类型为StringMap.key List
,我假设它是字符串列表
:
let map = List.fold_left(<SOME CODE HERE, WHICH I AM OMITTING>
) StringMap.empty string_list
让map=List.fold\u向左(
)StringMap.empty string\u列表
其中
string\u list
是缺少的参数:用于构建映射的键列表。StringMap。绑定将返回(键,值)
对的列表