ocaml不可变字符串优势

时间:2018-01-20 13:54:22

标签: ocaml immutability

我最近在https://github.com/dbuenzli/astring遇到了Ocaml的Astring模块。

图书馆的作者在自述文件中说明了以下内容:

...fully exploits OCaml's newfound string immutability

字符串的不变性给字符串库的实现带来了哪些优势?我试过阅读源代码,但无法找到任何具体的优势。有性能优势吗? 它是否允许更安全的模式?

2 个答案:

答案 0 :(得分:4)

不变性的主要用途是你可以操纵子串而不需要副本。

这就是a separate module for substrings的原因。如果字符串是可变的,整个模块就不会发出声音。

答案 1 :(得分:3)

当您的函数返回一个字符串并且该字符串已经存在时,您不必为结果创建该现有字符串的副本。

以下是一些简单的例子:

String.append s "" 
String.append "" s
String.trim "bla"

如果你的字符串是可变的,你总是必须在这些情况下返回副本。