我主要使用C#/.NET,所以我的首选是学习F#(因为它在.NET和Visual Studio上很熟悉)。另一方面,我想知道F#是否有像Lisp宏或Haskell高阶函数这样的功能。
你能比较一下F#、Haskell和Lisp吗?哪一个将是你的首选语言?
F#是我选择的语言,但我强烈建议您学习所有这些语言。它们都有自己不同和有趣的特点。以下是每种语言的简要概述(可能有点F#偏见),您可以通过谷歌搜索轻松找到更多信息:
F# - 是一种易于采用函数式编程风格的语言,让您可以轻松地复制对象而不是改变它们。它还提供了有趣的数据类型,如元组和代数数据类型,以及有用的语言构造,例如模式匹配和列表解析。它还具有面向对象和命令式特性,并且由于您可以使用任何.NET框架组件,因此可以方便地访问库。
Haskell - 是一种纯粹的惰性函数式语言,是一种罕见甚至独特的生物。这意味着除非它们被monad跟踪,否则根本没有副作用。Haskell也有元组、代数数据和模式匹配。
Lisp - 而F#和Haskell是静态类型的语言,Lisp是动态类型的。它有独特的语法,使用大量括号,并提供有趣的宏功能,允许您对程序本身进行转换并扩展语法。
我曾经也有同样的问题。
自那以后,我在F#中进行了一些编程。现在我非常高兴我这样做了,因为理解C#中的LINQ非常有帮助,而且那也是我的背景。(自从我学会了F#,我几乎不再使用C#中的foreach)
通过F#,我学到了很多关于惰性评估、列表和序列的东西,所有这些你可以选择任何具有良好列表、元组支持的语言(像任何函数语言一样),但如果你选择F#,所有这些都将在C#中非常有用。也许您已经知道并正确使用所有这些东西,但以防万一,选择F#。
我是从此处开始的:一个非常好的视频教程,非常令人印象深刻和鼓舞人心的导师。
目前我正在观看Channel 9上关于函数式编程基础的这些视频。虽然使用的是Haskell进行解释,但这些基础知识适用于所有编程语言。我必须说这非常有益并且易于理解。
Func
委托是.NET框架的一部分。