F# 源自 OCaml,但是缺少或添加了哪些主要项目?具体来说,我很好奇可用于学习 OCaml 的资源对于想要学习 F# 的人是否也有用。
这个问题已经得到解答有一段时间了,但令我感到非常惊讶的是,大多数答案都说 F# 中缺少哪些 OCaml 功能 - 如果您想将现有的 OCaml 程序移植到 F#(这可能是大多数参考文章的动机)。然而,有许多功能使 F# 成为一种不同的语言(不仅仅是用于 .NET 的 OCaml 的有限版本!)以下是 F# 中添加的一些内容:
-
计量单位允许您对处理数值计算的代码进行类型检查
-
元编程使用引号(这使得在 F# 中使用 LINQ 成为可能,并且对于 WebSharper 平台等有前景的项目也至关重要)
-
活跃模式用于创建函数数据类型的抽象(对于更复杂的模式匹配应用程序通常非常有用的功能)
-
计算表达式这是背后的语言特性异步工作流程(异步 I/O/Web 服务/GUI 编程的库)
-
.NET 兼容对象系统这使得与 .NET 平台完全互操作成为可能(OCaml 也支持对象,但有所不同 - 当然这两个系统都有一些好处)。
-
重载运算符- 据我所知,OCaml 没有重载运算符 - 在 F# 中你可以使用
+
对于所有数字类型以及支持它的类型。
老实说,我认为 Visual Studio IDE 也值得一提。这不是语言的一部分,但它确实改善了用户体验(Visual Studio 中的 IntelliSense 支持真的很好!)
如果您查看该列表,就会发现有很多因素在很大程度上促进了 F# 的流行,因此它不仅仅是“没有函子的 OCaml”。 F# 绝对基于 OCaml(并借鉴了 Haskell 等其他语言的思想),并与它们共享许多方面,但也有很多其他的东西。我猜想,如果没有异步工作流程、.NET 风格的 OO 和元编程之类的东西,Microsoft 开发人员部门永远不会在 Visual Studio 2010 中包含 F#。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)