在OCAML中更改相同的类型

时间:2011-03-25 21:46:01

标签: functional-programming ocaml ml

假设我有一个函数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标准库函数时,我遇到过这个问题。

1 个答案:

答案 0 :(得分:7)

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