在OCAML中更改相同的类型

Aym*_*ier 5 ocaml functional-programming ml

假设我有一个函数,list_fun : int_list -> string list并且在该函数中我使用我定义为模块的StringSet StringSet = Set.Make(String) ;;我尝试让函数返回Set.elements s并得到一个string list但是我得到一个StringSet.elt list应该是同一个东西,就像StringSet的type t = string

你如何让OCAML理解这些类型是如何定义的?我有几个案例,因为我已经开始使用OCAML标准库函数,所以我遇到了这个问题.

Mic*_*and 7

OCaml已经知道它们是相同的定义 - 除非你做一些奇怪的事情来隐藏抽象类型,它会将a StringSet.elt liststring list同一类型视为同一类型.