我一直在试图弄清楚我认为是一个非常简单的任务,即从函数内部将条目添加到OCaml中的字符串映射中。相关元素如下:
module StringMap = Map.Make (String);;
let m = StringMap.empty;;
let rec count ke = match ke with
|[] -> []
|hd::tl -> begin let m = StringMap.add hd 1 m; [hd] @ count tl end;;
我一直收到神秘的“语法错误”消息,但是即使将代码分解为几乎没有内容后,我仍未找到解决方案。我可以使用单个命令将其添加到字符串映射中,但是如果我尝试从函数内部运行
let m = StringMap.add hd 1 m
,它将无法运行。我敢肯定这是一个简单的问题,但是有人可以帮忙吗?谢谢。
最佳答案
您的代码似乎存在一些问题。但是首先,这是一个有关如何执行您要执行的操作的示例:
module StringMap = Map.Make (String)
let rec count m ke =
match ke with
| [] -> m
| hd :: tl -> count (StringMap.add hd 1 m) tl
let m = count StringMap.empty ["foo"; "bar"; "baz"]
对原始代码的一些注释:
关于ocaml - 在OCaml中添加到字符串映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3878527/