10

我已经编码了几年了,没什么太复杂的。C++ 是我最了解的。我最近偶然发现了 Paul Graham 的网站,编码恐怖,现在在这里。

我要学什么来“用函数式编程的方式启发自己”?Haskell、Scheme 还是 CLisp?

4

6 回答 6

18

如果您对函数式编程感兴趣,Haskell 是该列表中唯一的纯函数式语言。Common Lisp 是一种弱功能的混合范式语言,Scheme 功能更强,但仍然不纯。Lisp 之所以有趣还有其他原因,但 Haskell 几乎是函数式编程的最先进技术。

顺便说一句,我鼓励像 Haskell 这样更强大的函数式语言的原因是因为“学习函数式编程”的很大一部分是学习如何以不同的方式思考你的程序。如果你的语言让命令式写作感觉很自然,那么很容易陷入这种思维方式,而永远不会意识到有不同的方式可以做到这一点。

于 2010-03-12T22:25:23.707 回答
5

三者都好,因人而异。

如果您决定使用haskell,这是一个很好的资源:learnyouahaskell现实世界的haskell

于 2010-03-12T11:25:18.290 回答
5

在这三个中,我会说 Scheme 是最简单的整体,如果这是您的主要关注点。SICP使用 Scheme,它本身就是一个学习函数式编程的好资源。

然而,Common Lisp 有许多高级特性使其非常具有表现力,例如强大的错误处理(比异常更强大)、方法和对面向方面编程的支持。

您可能会从一种开始,但最终,您应该学习多种语言。

于 2010-03-12T10:57:37.033 回答
4

'enlighten myself with the ways' of functional programming?

Haskell's the strongest exemplar of the functional style, emphasizing purely functional programming (no side effects), strong static typing, and with a pragmatic implementation with an emphasis on multicore parallelism, while also having a huge community (around 2000 libraries available on http://hackage.haskell.org , and many online resources).

It's somewhat famous for retraining how people think about programming.

But this is advocacy, and not a useful stackoverflow question and answer session. You'll have to decide for yourself what you're looking to learn.

于 2010-03-13T04:48:55.920 回答
4

正如其他答案所说,这三个都很好。

但是,如果您决定使用 Lisp,那么我建议您选择Clojure,这可能是它最近的转世版本。

于 2010-03-12T13:08:45.447 回答
3

你听说过 F#、ML 或 OCaml 吗?这三种语言属于 ML 家族。

F#是 Microsoft 支持的一种新的 ML 方言,将随 Visual Studio 2010 一起提供。F#(或其他 ML 语言)的好处是,当您第一次开始时,您可以编写命令式代码并逐渐学习良好的函数式风格。

这是我为Project Euler #2编写的示例。当我第一次这样做时,我使用了命令式风格。后来,我知道如何使用惰性序列,这是一个强大的函数式编程概念。

于 2010-03-13T07:18:36.797 回答