这些都是编程语言领域中相对较新的发展。这是您在F#中看到的,而在Lisp中,特别是Common Lisp中,您不会看到这些,因为F#标准仍在开发中。因此,您会发现有很多内容需要学习。当然,像ADT、模式匹配、单子和柯里化之类的东西在Lisp中可以作为库构建,但在方便的内置语言中学习它们更好。
学习F#以用于实际应用的最大优势是其与.NET的集成。
eval'和一个具有三个元素的列表 - 一个函数
+'和两个参数1'和
2'。这就是Lisp是同像的含义。 - Andrey Fedorov考虑到LISP是动态类型语言,而F#是静态类型语言,我认为这种比较有些奇怪。
如果我从Lisp转向F#,那只是因为我手头有一个极大受益于某些仅限于.NET的库的任务。
但我没有这样的任务,所以我不会这样做。
钱。F#代码已经比Lisp代码更有价值,随着F#的广泛应用,这种差距将会迅速扩大。
换句话说,使用F#比使用Lisp赚取稳定收入的机会要更大。
祝好, Jon Harrop。
F#与大多数Lisp方言相比是一种非常不同的语言。因此,F#给你提供了一种不同的编程角度——这是你在Lisp中学不到的。大多数Lisp方言最适用于符号软件的增量、交互式开发。同时,大多数Lisp方言不是纯函数式编程语言,而更像多范式语言——不同的方言对支持FPL特性(无副作用、不可变数据结构、代数数据类型等)有不同的重视。因此,大多数Lisp方言要么缺乏静态类型,要么不太注重它。
所以,如果你知道一些Lisp方言,那么学习F#就有很多意义。只是不要认为你在Lisp中的许多知识也适用于F#,因为F#是一种非常不同的语言。正如一个使用C或Java的命令式编程者在学习Lisp时需要放弃一些思想一样,当使用F#时,人们也需要放弃Lisp习惯(没有类型、副作用、宏等)。F#也由微软推动并利用.net框架。
F#的好处是.NET开发(总体上)被广泛采用,易于获取,更具大众市场性。
如果您想编写F#代码,可以使用许多开发人员已经拥有的Visual Studio...... 而不是启动和运行LISP环境。
此外,现有的.NET开发人员更有可能查看F#而不是LISP,如果这对您有意义的话。
(这来自一位.NET开发人员,他在大学时曾编写并喜欢LISP。)
我不确定你是否会有兴趣?如果你觉得F#很有趣,那就是一个理由。如果你的工作需要它,那也是一个理由。如果你认为使用它可以提高你的生产力或者给你带来比现在更多的价值,那也是一个理由。
但是如果你觉得F#没意思,你的工作也不需要它,而且你认为使用它不能提高你的生产力或者给你带来比现在更多的价值,那你为什么要用呢?
如果问题改成了F#相对于Lisp的优势在哪里,那应该考虑到类型推断、模式匹配以及与.NET框架的整合。
从一个角度来看,(原始问题)的一种方法是将语言(以及相关工具和平台)与即时任务相匹配。如果任务需要压倒性比例的.NET代码,并且使用一种语言比另一种语言更容易满足任务的要求,那么选择阻力最小的路径(F#)。如果您不需要.NET功能,并且习惯于使用LISP,并且没有强制性的理由离开它,请继续使用它。
这并不比将锤子与扳手进行比较有很大的不同。选择最有效地完成工作的工具。试图选择客观上“最佳”的工具是无意义的。而且,在任何情况下,20年后,所有目前“热门”的语言可能都已过时。
type Expr = Num of float | Var of string | Add of Expr * Expr | Mul of Expr * Expr
和通过它进行模式匹配的功能,例如对类型Expr
的值进行微分。除非你使用类似Qi的东西,否则我不知道CL中是否有一个等效的解决方案,而这种情况下你就是在用Greenspunning F#。 - J D