Programming languages Lisp与F#有什么关系?学习Lisp对F#有帮助吗?
情况是这样的:我主要编写C#程序,并且在其中编写了类型,我不想丢失。同时我想学习函数式编程。当然,显而易见的答案是F 但除了C#之外,我还使用emacs作为编辑器,我真的很想学习Lisp。(学习你的编辑器/IDE语言你知道,这就是为什么我知道一点VB来编写我的VS宏的原因)这不仅仅是emacs,Lisp是我真正想学习的东西 至于F#,我可以将它与C#混合在一起,而不存在任何互操作问题,有一个很棒的GUI(WPF)和许多其他的.NET好东西。但它当然没有Lisp那么成熟 如果我是现实主义者,我知道如果我想把函数式语言带入我的职业生涯,它必须是F#。由于学习两种完整的语言似乎有点多,我希望Lisp将是学习函数式编程的一种很好的方式,如果我以后开始学习F#,那将非常容易Programming languages Lisp与F#有什么关系?学习Lisp对F#有帮助吗?,programming-languages,f#,lisp,compare-contrast,Programming Languages,F#,Lisp,Compare Contrast,情况是这样的:我主要编写C#程序,并且在其中编写了类型,我不想丢失。同时我想学习函数式编程。当然,显而易见的答案是F 但除了C#之外,我还使用emacs作为编辑器,我真的很想学习Lisp。(学习你的编辑器/IDE语言你知道,这就是为什么我知道一点VB来编写我的VS宏的原因)这不仅仅是emacs,Lisp是我真正想学习的东西 至于F#,我可以将它与C#混合在一起,而不存在任何互操作问题,有一个很棒的GUI(WPF)和许多其他的.NET好东西。但它当然没有Lisp那么成熟 如果我是现实主义者,我知道
这是真的吗?或者这两种语言根本不可比?它们都是函数式语言,但在语法上却截然不同。这意味着许多概念将是相似的,而您(作为一个过程开发人员)将不得不做同样的脑力劳动来使用它们,但它们是非常不同的语言 F#是的派生词(其所有派生词都被视为不纯正的函数式语言),而F#更老,被视为“纯”函数式语言 函数式语言的纯粹性是一个引人入胜的话题,我建议您阅读以更好地理解这个概念: 许多人谈论“纯洁” 函数式语言,其中“纯” 似乎是“好”的同义词。 通常有两个特点 与…的定义有关 纯函数式语言:
而且,我会说,在开始F#之前学习一种更纯粹的函数式语言将是培养良好函数式编程习惯的一种方式,因为如果你不这样做,你的F#代码可能会变得更面向对象,功能性更低,因为你就是从这里来的。作为一种编程语言,Lisp本身非常特殊,但它与F#完全不同,只是它们都支持函数式编程。从Lisp到F#的语言结构并不多。如果你想学lisp,那就去学吧。函数式编程的思想将继承而不是语法。Lisp真的很老了,50多岁了。许多语言都受到了它的影响,还有不少方言 如果你只是想在F#之前学习一门纯函数式语言,我建议你使用Haskell。
Haskell受到ML的极大影响,是一个很好的过渡语言,因为F是一个ML的导数。你可以查看Haskell代码并在F代码中看到类似的模式。
两个重要的事情要考虑的是:
- LISP是动态类型,而F#是静态类型
- LISP内置了宏。F#没有
为了能够与.NET进行互操作,我当然会选择F#但为了编程的美观,我也会尝试LISP。在我看来,学习函数式编程有两种方法:
最终,理解函数式编程概念(高阶函数、无副作用、尾部递归等)比任何一种语言都更有价值。一旦你学会了这些概念,学习新的语言并将这些技术应用到其他语言中(比如功能越来越强大的C#)就会容易得多。按照这些思路,您可能会对以下内容感兴趣。我认为通过Common Lisp和F#所学的内容只有一小部分“重叠”。共同点是我粗略地想
- 使用“cons list”作为常见的基本数据类型进行编程,有时编写递归(尤其是尾部递归)函数而不是循环
- 常见高阶函数的一些基本用法(例如,“映射”-将函数应用于列表中的每个值)