如何在OCaml中将Map.key更改为字符串?

如何在OCaml中将Map.key更改为字符串?,ocaml,Ocaml,首先我定义了 模块StringMap=Map.Make(String) 我有一个由StringMap.bindings生成的列表,列表中的类型是(StringMap.key×int)。我想将键用作字符串,以便比较它们,如何更改其列表类型?您的类型StringMap.key是字符串的同义词。不需要转换,它们是相同的类型 # let mymap = StringMap.singleton "abc" 14;; val mymap : int StringMap.t = <abstr> #

首先我定义了

模块StringMap=Map.Make(String)


我有一个由StringMap.bindings生成的列表,列表中的类型是(StringMap.key×int)。我想将键用作字符串,以便比较它们,如何更改其列表类型?

您的类型
StringMap.key
字符串的同义词。不需要转换,它们是相同的类型

# let mymap = StringMap.singleton "abc" 14;;
val mymap : int StringMap.t = <abstr>
# StringMap.bindings mymap;;
- : (StringMap.key * int) list = [("abc", 14)]
# fst (List.hd (StringMap.bindings mymap)) = "abc";;
- : bool = true
#让mymap=StringMap.singleton“abc”14;;
val mymap:int StringMap.t=
#StringMap.bindings mymap;;
-:(StringMap.key*int)list=[(“abc”,14)]
#fst(List.hd(StringMap.bindings mymap))=“abc”;;
-:bool=true

非常感谢:)我发现了另一个导致代码错误的bug。我认为错误是由类型不匹配引起的。如果存在类型不匹配,编译器会专门告诉您。强类型语言的要点是总是可以检测到类型错误。如果编译器没有特别提到任何类型不匹配,那么您的问题是其他问题。