gpt4 book ai didi

ocaml - 为什么 Reason 数组是可变的?

转载 作者:行者123 更新时间:2023-12-04 02:02:30 25 4
gpt4 key购买 nike

我想我是在问这个设计决定背后的基本原理。

数组可变的原因在默认情况下不可变的其他数据结构(列表、记录、散列图、集合)中显得异常突出。

这是有原因的吗?是否有不可变的替代方案?

最佳答案

确实没有“原因数组”这样的东西。 Reason 是 OCaml 的替代语法,并且 OCaml 具有可变数组。然而,Reason 通常与编译为 JavaScript 的 BuckleScript 后端一起使用,后者也具有可变数组,但 reason why 略有不同。

  • 在 OCaml 中,当您需要数组的特性时使用数组,通常是为了它的性能配置文件,但您可能还想将它用于它的内存布局,这非常简单且易于与其他语言,但也需要能够通过共享地址空间的访问和变更与硬件进行通信。

  • 使用 BuckleScript,数组直接映射到 JavaScript 数组,它除了可变之外还可以动态调整大小,因此实际上是一个数组列表。在这里,您通常也会将它用于性能和与 JavaScript 的互操作,但由于实现略有不同,因此性能特征也略有不同。

在这两种情况下,如果您想要类似数组但不可变的东西,您通常会使用列表,但也有其他选项,例如 Immutable.re's Vector .

最好问一下为什么 OCaml 不在其标准库中包含不可变数组数据类型。我不确定任何人都可以对此给出明确的答案,但这可能只是因为它没有被足够的要求,也许是因为 list 做得足够好,类似于不可变数组。

关于ocaml - 为什么 Reason 数组是可变的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46185601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com