为什么 ocaml 有可变数组?

Dav*_*vid 1 ocaml functional-programming

为什么 Ocaml 有可变数组?据我了解函数式编程,它是为了尽量减少副作用。可变(编辑:)数组与该想法不相悖吗?

即使字符串在 Ocaml 中也是可变的,这在 python 中甚至不是这种情况,或者 OCaml 不被认为是一种纯函数式语言?

Jef*_*eld 7

OCaml 不是纯函数式语言,没错。它有一个纯函数子集,但支持变异和许多命令式构造(以及可变的 OO 对象)。恕我直言,重点是允许程序员在为函数式编程提供出色支持(和一种鼓励)的同时进行必要的权衡。

正如@AnuragSoni 指出的那样,列表和数组在 OCaml 中是不同的。数组是可变的,但列表不是。

在我看来,纯函数数组是相当有问题的。例如,根据我的(适度的)经验,它们在 Haskell 中并没有被广泛使用。它们是纯净的,是的,但对于许多目的来说不够有效。