2016-07-18 4 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

더 나은 답변을 원하시면 코드를 공개해야합니다.

타이핑 오류 메시지는 이미 잘못된 점을 설명했습니다. 즉, int DictMap.t 유형의 int에 대한 하나의 단어 맵을 작성하지 않고 int DictMap.t list 유형의 int에 대한 MAPS 목록을 작성합니다. 귀하의 코드가

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); ... ]