OCaml中的地图类型错误

时间:2016-07-18 03:28:38

标签: mapping ocaml abstract

我正在创建列表中的单词映射,但我得到此返回值和下面的错误。当我手动添加内容时,我可以Map.find没有任何问题。像这样的类型错误是否有很好的资源?

#   val word_mapping : int DictMap.t list =
      [<abstr>; <abstr>; <abstr>; <abstr>; <abstr>; <abstr>; <abstr>; <abstr>;
       <abstr>]
    # DictMap.find "There" word_mapping;;
    Error: This expression has type int DictMap.t list
           but an expression was expected of type
             'a DictMap.t = 'a Map.Make(String).t

1 个答案:

答案 0 :(得分:1)

如果你想要更好的答案,你应该透露你的代码。

输入错误消息已经解释了什么是错误的:您没有创建一个单词地图到int DictMap.t类型的整数,而是创建一个单词的MAPS列表到int DictMap.t list类型的整数。我想你的代码就像

List.map (fun (k,v) -> DictMap.add k v DictMap.empty) [("a",1); ("b",2); ... ]

或类似的东西。

您需要做的是从一个空的DictMap.t开始并使用列表折叠来增长它,例如:

List.fold_left (fun dict (k,v) -> DictMap.add k v dict) DictMap.empty [("a",1); ("b",2); ... ]