Functional programming 更改OCAML中的相同类型

Functional programming 更改OCAML中的相同类型,functional-programming,ocaml,ml,Functional Programming,Ocaml,Ml,假设我有一个函数list\u fun:int\u list->string list,在这个函数中我使用了一个StringSet,我定义为moduleStringSet=Set.Make(string)我试图让函数返回Set.elements s并得到一个string列表,但是我得到了一个StringSet.elt列表,它应该是与StringSet的type t=string 如何让OCAML理解这些类型的定义是相同的?当我开始使用OCAML标准库函数时,我遇到过几个这样的问题。OCAML已经知

假设我有一个函数
list\u fun:int\u list->string list
,在这个函数中我使用了一个StringSet,我定义为module
StringSet=Set.Make(string)
我试图让函数返回
Set.elements s
并得到一个
string列表
,但是我得到了一个
StringSet.elt列表
,它应该是与StringSet的
type t=string


如何让OCAML理解这些类型的定义是相同的?当我开始使用OCAML标准库函数时,我遇到过几个这样的问题。

OCAML已经知道它们的定义是相同的-除非你做了一些奇怪的事情来隐藏抽象中的类型,它将把
StringSet.elt列表
string列表
视为同一类型