假设我有一个函数list_fun : int_list -> string list
并且在该函数中我使用我定义为模块StringSet = Set.Make(String) ;;
的StringSet我尝试让函数返回Set.elements s
并获得string list
但是我得到一个StringSet.elt list
,它应该是同一个东西,就像StringSet的type t = string
如何让OCAML明白这些类型是否相同?我有几个案例,当我开始使用OCAML标准库函数时,我遇到过这个问题。
答案 0 :(得分:7)
OCaml已经知道它们是相同的定义 - 除非你做一些奇怪的事情来隐藏抽象类型,它会将StringSet.elt list
和string list
视为同一类型。