emp*_*mpi 42 c# lisp f# haskell language-comparisons
我听过很多关于函数式编程语言的知识,我很乐意学习它.我想这主要是为了好玩,但是,我希望它能提高我的编程技巧.
我主要是C#/ .NET背景,所以我的第一选择是学习F#(因为.NET和熟悉Visual Studio).另一方面,我想知道F#是否具有Lisp宏或Haskell高阶函数等功能.
你能比较F#,Haskell和Lisp吗?哪一个将是您选择的语言?
Rob*_*ert 43
F#是我的首选语言,但我强烈建议你学习它们.它们本身就是完全不同和有趣的.这里是每个人的快速浏览(可能有轻微的F#偏差),您可以通过Google搜索轻松找到更多信息:
F# - 是一种语言,可以轻松地在功能样式中进行编程,让您轻松复制对象而不是改变它们.它还为您提供有趣的数据类型,如元组和代数数据类型,有用的语言结构,如模式匹配和列表推导.它还具有OO和命令功能以及对库的良好访问,因为您可以使用任何.NET框架组件.
Haskell - 是一种纯粹而懒惰的功能语言,是一种罕见甚至独特的野兽.这意味着根本没有任何副作用,除非它们被monad跟踪.Haskel也有元组,代数数据和模式匹配.
Lisp - 而F#和Haskell是静态类型的,lisp是动态类型的.它具有独特的语法,使用大量括号并提供一个有趣的宏功能,允许您对程序本身进行转换并扩展语法.
我不知道F#但我喜欢有时玩它.我的语言是Clojure,它非常实用,也适用于CLR,但JVM版本是主要版本.
它会让你想到很多你想要的东西.F#的主要不同之处在于Clojure是动态类型的,并且它具有很好的处理可靠性的方法(我会说最好的方法之一).
BTW.您是否知道F#是因为Haskell难以在CLR上运行而制作的?(当然不是整个故事,而是它的一部分)
实际上没有人回答这个具体问题:"我想知道F#是否具有Lisp宏或Haskell高阶函数等功能."
F#不提供宏.此外,它不提供更高级的类型(这是我认为你最初问的).
F#确实提供了更高阶的函数,因为您可以轻松编写一个函数来获取函数并返回一个函数.实际上,C#(或实际上任何.NET语言)都可以这样做,因为Func委托是.NET框架的一部分.
为什么选择?自己学习Lisp和Haskell.没有必要在你自己的时间学习F#.如果你需要它来工作,你将在工作中学习它;)
编辑:这家伙正在寻找语言来学习乐趣.好吧,Lisp和Haskell是很好的候选人,因为有趣的是他们将被用于(那里没有带薪工作).他"可能"(虽然不太可能)有机会在工作中使用F#(他在MS商店),所以为什么在空闲时间学习一些东西可以在工作时学习它.
我从不同程度上学到了所有这些知识,并建议从Scheme(一种Lisp方言)开始 - 只是因为它最容易学习.Haskell和F#是静态类型的,这对于现实生活中的项目来说是一个很大的优势,但恕我直言他们有一点"太多"的语法,并不像Scheme那么容易.
.NET有一个很好的Scheme实现 - IronScheme.您可以查看我的文章" 与IronScheme一起玩 ",看看您是否喜欢它.
如果我们比较这三种语言,我会推荐 Haskell。我认为它比 LISP 更实用(因为它是类型系统)并且比 F# 更强大和更聪明。据您所知,F# 是 OCaml 的 .NET 端口,并且在某种程度上它不像 Haskell 或 OCaml 那样在意识形态上清晰。我建议您学习 Haskell 或 OCaml 以了解 F# 是多么不方便。
| 归档时间: |
|
| 查看次数: |
23152 次 |
| 最近记录: |