如何更改OCAML中的Set模块以适合我自己的集合表示?

时间:2017-03-14 15:27:59

标签: set ocaml

OCAML的字符串设置模块的默认实现具有以下格式: ["here"; "is"; "a"; "set"]但我希望我的设置格式为{"here", "is", "a", "set"}

是否有一种简单的方法可以更改模块以适应我的格式(因此[]相当于{};相当于,)而无需重写整个模块?如果我必须重写整个模块,那么最好的方法是什么,我可以访问默认设置模块的当前方法吗?谢谢你的时间。

1 个答案:

答案 0 :(得分:1)

  

OCAML的字符串设置模块的默认实现具有以下格式。

默认实现未指定或实现任何格式。实际上,OCaml没有字符串的默认Set模块,它有一个仿函数,可以使用任何类似的类型进行参数化,以生成此类值集合的模块。

如果您正在谈论打印一套的格式,那么您可以自己实施,然后以您喜欢的方式打印。如果您希望在顶层中看到此输出,那么将打印您的集合所需的函数类型为Format.formatter -> your_set_type -> unit,其中your_set_type是您的集合类型的类型构造函数。您可以告诉OCaml顶级或调试器将您的打印机与install_printer指令一起使用。

如果您正在讨论如何在OCaml程序中表示字符串列表,那么这是OCaml语言实现的强制要求。如果您不喜欢它,可以克隆OCaml实现并更改语法。或者,您可以使用camlp4或camlp5语法重写器来更改OCaml解析器的语法,而无需更改实际代码。