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

Я кодировал в течение нескольких лет теперь, ничего также сложного. C++ - то, что я знаю лучше всего. Я недавно споткнулся в сайт Paul Graham, кодировав ужас, и теперь здесь.

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

10
задан nbro 7 August 2017 в 23:43
поделиться

6 ответов

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

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

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

5
ответ дан 3 December 2019 в 13:54
поделиться

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

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

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

3
ответ дан 3 December 2019 в 13:54
поделиться

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

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

18
ответ дан 3 December 2019 в 13:54
поделиться

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

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

5
ответ дан 3 December 2019 в 13:54
поделиться

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

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

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

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

4
ответ дан 3 December 2019 в 13:54
поделиться

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

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

4
ответ дан 3 December 2019 в 13:54
поделиться