我的理解是“纯OCaml”表示OCaml中标准的所有内容,包括其非“纯粹”功能性功能,而“纯功能”意味着通常属性:没有副作用,没有异常处理等。从这个意义上讲,“纯OCaml”实现与OCaml相反,例如C或C ++实现。
然而,最近我和一个非常坚持认为“纯OCaml”的人在某些圈子里就OCaml的“纯功能子集”进行了辩论。
这两个含义是否真的在社区中使用?是否存在这种歧义?是否有指向某些备受推崇的消息来源在第二种意义上使用“纯OCaml”?
答案 0 :(得分:8)
很难回答这些问题,因为要求整个社区。它们更适合OCaml邮件列表,尽管那里的人可能有点沮丧。
所以,我无法回答整个社区,但我个人认为你就在这里。当有人说"纯OCaml"他通常的意思是,程序仅以OCaml语言实现,没有任何C
存根。
我从未听说过功能纯粹的OCaml子集。而且我怀疑,使用纯功能语言功能实现某些功能几乎是不可能的。例如,String
模块,异常,整个IO子系统,严格来说是非纯的。
答案 1 :(得分:6)
“Pure OCaml”是指仅以OCaml语言编写的应用程序或库。
它排除了使用Obj
模块,因为它“不是OCaml语言的一部分”(Xavier Leroy on caml-list http://article.gmane.org/gmane.comp.lang.caml.general/47389)。
根据上下文,它可能会或可能不会容忍标准OCaml发行版附带但不属于标准库(Str
,Unix
,...)的C库。< / p>
答案 2 :(得分:5)
&#34; Pure OCaml&#34;绝对不是指OCaml&#34;的纯功能子集。 OCaml的非功能性方面是OCaml的固有重要组成部分(例如,Harper提到benign effects的价值),因此&#34;纯OCaml&#34;不能意味着。