Чему я научусь "просвещать себя способами" функционального программирования?

Я кодируюсь уже несколько лет, ничего сложного. С++ - это то, что я знаю лучше всего. Недавно я наткнулся на сайт Пола Грэма, кодируя ужас, и теперь здесь.

Чему я научусь "просвещать себя способами" функционального программирования? Haskell, Scheme или CLisp?

Ответ 1

Если вы заинтересованы в функциональном программировании, Haskell является единственным чисто функциональным языком в этом списке. Общий Lisp является слабо функциональным языком смешанной парадигмы, а схема более функциональна, но все еще не чиста. Lisps интересны по другим причинам, но Haskell - это довольно современный уровень функционального программирования.

Кстати, причина, по которой я призываю более интенсивные функциональные языки, такие как Haskell, состоит в том, что большая часть "обучения функциональному программированию" учит думать о вашей программе по-другому. Если ваш язык заставляет чувствовать себя естественно писать императивно, он слишком легко впадает в этот образ мышления и никогда не понимает, есть ли другой способ сделать это.

Ответ 2

Из трех я бы сказал, что схема - это самое простое, если это ваша главная забота. SICP использует Scheme и сам по себе является отличным ресурсом для обучения программированию функционального способа.

Однако Common Lisp имеет множество дополнительных функций, которые делают его довольно выразительным, например, мощная обработка ошибок (более мощная, чем исключения), multimethods и поддержка аспектно-ориентированного программирования.

Вы можете начать с одного, но, в конце концов, вы должны изучить многие языки.

Ответ 3

Все трое хороши, зависит от каждого человека.

Если вы решите на haskell, это отличный ресурс: learnyouahaskell, а также реальный мир haskell

Ответ 4

Как говорят другие ответы, все три хороши.

Но если вы решите Lisp, то я предлагаю вам перейти на Clojure, который, возможно, является его последней реинкарнацией.

Ответ 5

'просвещать себя способами функционального программирования?

Haskell является самым сильным образцом функционального стиля, подчеркивая чисто функциональное программирование (без побочных эффектов), сильную статическую типизацию и с прагматичной реализацией с акцентом на многоядерный parallelism, а также с огромным сообществом (около 2000 библиотек доступный на http://hackage.haskell.org и многие онлайн-ресурсы).

Он несколько известен переподготовкой, как люди думают о программировании.

Но это пропаганда, а не полезный сеанс вопросов и ответов stackoverflow. Вы должны сами решить, что хотите изучить.

Ответ 6

Слышали ли вы о F #, ML или OCaml? Эти три языка относятся к семейству ML.

F # - это новый диалект ML, поддерживаемый Microsoft, и будет поставляться с Visual Studio 2010. Хорошая вещь о F # (или другом ML языки) заключается в том, что при первом запуске вы можете писать императивный код и постепенно учиться хорошему функциональному стилю.

Вот пример, который я написал для Project Euler # 2. Когда я впервые это сделал, я использовал императивный стиль. Позже я знаю, как использовать ленивую последовательность, которая является мощной концепцией функционального программирования.