2016-07-18 3 views
-1

Я создаю сопоставление слов из списка, но я получаю это возвращаемое значение и ошибку ниже. Когда я добавляю к нему что-то вручную, я могу Map.find без каких-либо проблем. Есть ли хороший ресурс для таких типов ошибок?Тип карты Ошибка в OCaml

# 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

Вы должны раскрыть свой код, если хотите получить более качественные ответы.

Сообщение об ошибке ввода уже объяснило, что не так: вы не создаете ОДНУЮ карту слов для ints типа int DictMap.t, но список MAPS слов для int типа 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); ... ] 
Смежные вопросы