F#是来自OCaml,但主要项目丢失或加入?具体地说我好奇是否可用资源用于学习OCaml也是有用的,有人想要学习F#。

有帮助吗?

解决方案

主要的差异是,F#不支持:

  • OCaml式对象
  • 多晶型的变种
  • 该camlp4/5的预处理器或者扩展点(ppx)

此外,F#具有不同的语法用于标记和可选择的参数。

在理论上,OCaml程序,不使用这些功能可以编制与F#。学习OCaml是一个完全合理的介绍F#(反之亦然,我可以想象).

完整的清单的差异是 在这里, (注:archive.org 更换死的链接)。

其他提示

这个问题已经回答说对于一些时间,但现在我很惊讶的是,大多数答复说什么OCaml功能缺失,在F#-这绝对是好的要知道如果您想要口现有的OCaml程序F#(这是可能的动机是最引用的文章)。然而,还有许多功能,使F#不同的语言(不只是限量版的OCaml。净!) 这里是一对夫妇的事情都加在F#:

  • 度量单位 这让你检查代码处理的数值计算
  • 元编程 采用报价(这使得它可以使用的皇宫在F#也是必不可少promissing的项目,如websharper平台)
  • 活动模式 为创建为抽象的数据的功能类型(一般非常有用的功能更加复杂模式匹配的应用程序)
  • 计算表达式 这是一个语言功能后面 异步的工作流程 (a库步I/O/网服务/GUI编程)
  • .网兼容的对象的系统 这使得它们能够充分相互操作。网的平台(OCaml还有一个支持对象,但是不同的-当然也有一些好处,在这两个系统)。
  • 载运营商 -就我所知,OCaml没有载运营商-F#你可以使用 + 所有数值类型以及你的类型,支持它。

而且,老实说,我认为还值得一提的是Visual Studio IDE。这不是一个语言的一部分,但它确实提高用户的经验(智能感知支持在Visual Studio是真的很不错!)

如果你看起来在名单上,有许多事情在很大程度上促进了普及,所以它不仅仅是"OCaml不函".F#肯定是基于OCaml(和需要的想法,从其他语言,如Haskell)和股份的许多方面与他们的,但是还有很多其他东西。我猜那个没有的东西像是异步的工作流程.净式OO和元编程、微软开发司将永远不会包括F#在Visual Studio2010年。

我总是把F#描述为OCaml的堂兄,因为OCaml有很多F#没有的功能,而且永远不可能获得。 F#与以前的CAML语言关系更密切。特别是,F#对抽象的支持非常有限,并且不支持结构类型化(如OCaml的对象多态变体)。

与一些回复者所写的内容相反,F#对标记(“命名”)和可选参数的支持(有限)。

然而,这些都是高级功能,您当然可以开始使用有关OCaml的资源来掌握小规模OCaml风格函数编程背后的基本思想。您将发现的第一个主要差异是封装和抽象等大规模问题,这些问题在OCaml和F#中以完全不同的方式解决。如果你想学习如何在F#中做到这一点,唯一可用的文献是这篇关于纯功能数据结构的文章

我还发现OCaml的精彩模块系统可以很容易地在类型(例如数据结构)上参数化代码,但是OOP替代方案不仅可怕,而且几乎完全未在.NET上使用。此外,在尝试编写优雅参数化的数据结构时,我在F#编译器中遇到了许多错误,因为之前没有人尝试过这样做。 F#stdlib确实包含一些不错的数据结构实现,但实际上没有重用,即它是一个cut'n'paste工作。

F#和OCaml是ML系列语言中的分类学类,其中包括其他奇怪动物的整个传递。 F#比OCaml更新,并且它没有任何仿函数[模块的功能 - >模块]或行类型[对象类和多态变体]。在它们之间,这两个简化可能使在.Net平台上开发的人更容易学习。遗憾的是,这两种语言功能在OCaml中非常强大,因此阅读OCaml文献以获得有关如何编写F#代码的见解可能会导致对后者的过早挫败,因为它可能是C#的绝佳替代品,两者都可用。

F#直接支持OCaml语法。它可能不是100%兼容,但我认为它非常接近。

http://plus.kaist.ac.kr/ 〜shoh / fsharp / HTML / index.html中

以下是差异列表(不确定它是如何更新的)

http://plus.kaist。 ac.kr/~shoh/fsharp/html/fsharp-vs-ocaml.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top