"pure OCaml"在文学和习俗中等同于"purely functional"吗?



我的理解是,"纯OCaml"是指OCaml中标准的所有内容,包括"纯"功能特性,而"纯功能"意味着通常的属性:没有副作用,没有异常处理等。从这个意义上说,"纯OCaml"实现与C或C++实现相对立。

然而,我最近与某人进行了辩论,他非常坚持认为"纯OCaml"在某些圈子中意味着OCaml的"纯功能子集"。

这两个含义真的在社区中使用吗?是否存在这种歧义?是否有指向一些在第二种意义上使用"纯OCaml"的备受推崇的来源的指针?

很难

回答这样的问题,因为整个社区都被问到了。它们更适合OCaml邮件列表,尽管那里的人可能有点沮丧。

所以,我不能回答整个社区,但我个人认为你就在这里。当有人说"纯OCaml"时,他通常的意思是,一个程序只用OCaml语言实现,没有任何C存根。

我从未听说过OCaml的功能纯子集。我怀疑,仅使用纯函数式语言特性来实现某些东西实际上是不可能的。例如,String模块、异常(整个 IO 子系统)都是严格非纯的。

"纯OCaml"是指仅用OCaml语言编写的应用程序或库。

它排除了Obj模块的使用,因为它"不是OCaml语言的一部分"(Xavier Leroy on caml-list http://article.gmane.org/gmane.comp.lang.caml.general/47389)。

根据上下文的不同,它可能会也可能不会容忍标准OCaml发行版附带但不是标准库一部分的C库(StrUnix,...)。

"

Pure OCaml"绝对不是指"OCaml的纯功能子集"。OCaml的非功能方面是OCaml固有的重要组成部分(例如,Harper提到了良性效应的价值),所以"纯OCaml"不能意味着这个意思。

最新更新