OCAML 不可变字符串优势



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

该库的作者在自述文件中陈述了以下内容:

...fully exploits OCaml's newfound string immutability
字符串的

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

不可变性的主要用途是您可以操作子字符串而无需它的副本。

这就是为什么有一个单独的子字符串模块的原因。如果字符串是可变的,整个模块将不合理。

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

以下是一些简单的例子:

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

如果您的字符串是可变的,则在这些情况下,您始终必须返回副本。

最新更新