【发布时间】:2016-08-13 15:49:52
【问题描述】:
我大致知道 F# 和 OCaml 在“功能”方面有何不同(例如函子、camlp4、度量单位......)。
我想知道以下几点:关于不包含上述功能的代码,F# 和 OCaml 之间的编码风格(除了命名约定之外)是否存在差异?换句话说,如果某些(惯用的)F# 代码可以直接(可能是微不足道地)翻译成 OCaml,那么这种转换是否必然会导致惯用的 Ocaml?
编辑:从 Guy Coder 提供的链接中,我猜一些“惯用的”OCaml 代码可能不会直接转换为“惯用的”F# 代码,因为 F# 中的异常要慢得多(并且在 OCaml 中使用更广泛) .另一个方向呢?一些 F#ish OCaml 代码是否会引起“不要那样做 XX,OCaml 做 XX 的方式是例外而不是 XY..”的反应。
一般来说,在 OCaml 中使用异常与在 F# 中的典型用法相比有什么不同。两种语言中是否还有其他不同使用的结构(例如,由于一种语言的性能损失)?
【问题讨论】:
-
感谢您花时间真正探索这个问题,而不是简单地浏览一下我提供的链接。我没有积极使用 OCaml,因此我可以提供的内容存在漏洞,但是我认为使用选项类型而不是异常不会是惯用的,我认为使用异常作为 ML 的保留。
-
如果您以我所拥有的知识来看这个问题,要真正更深入地理解这个问题,那么您不能只看 F# 和 OCaml,而是看整个 ML 系列,ML,CAML,OCaml,和 F#。我相信 CAML 不再活跃,甚至不再用于主流,但出于历史原因,我将其包括在内。
-
您可能感兴趣的更多链接来自我提出的有关将 OCaml 转换为 F# 的问题。看我的questions,以
Converting OCaml to F#:开头 -
Are there other constructs that are differently used in the two languages正如我在回答中指出的那样,最大的差异是库和环境的差异,例如.Net和Visual Studio与batteries included。类型系统也是一个必须更详细了解的东西。我知道一个很好的详细页面,但目前我找不到对它的参考,但它在我的一些 SO cmets 中。此外,Jon Harrop 可以提供更好的答案,因为他多年来一直使用这两种语言进行咨询。