F# по сравнению с Haskell по сравнению с Lisp - который язык учиться? [закрытый]

42
задан Don Stewart 18 April 2011 в 23:06
поделиться

7 ответов

Я предпочитаю F #, но я настоятельно рекомендую изучить их все. Все они разные и по-своему интересны. Вот краткий обзор каждого из них (возможно, с небольшим уклоном в F #), вы можете легко найти дополнительную информацию в Google:

F # - это язык, который упрощает программирование в функциональном стиле, позволяет легко копировать объекты а не видоизменять их. Он также дает вам интересные типы данных, такие как кортежи и алгебраические типы данных, полезные языковые конструкции, такие как сопоставление с образцом и понимание списков. Он также имеет объектно-ориентированные и императивные функции и хороший доступ к библиотекам, так как вы можете использовать любой.Компонент платформы .NET.

Haskell - чистый и ленивый функциональный язык, делающий редкое или даже уникальное чудовище. Это означает, что побочных эффектов нет вообще, если они не отслеживаются монадой. В Haskel тоже есть кортежи, алгебраические данные и сопоставление с образцом.

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

43
ответ дан 26 November 2019 в 23:21
поделиться

У меня однажды был такой же вопрос

С тех пор я немного программировал на F #. Теперь я очень рад, что сделал это, так как действительно полезно понимать LINQ на C #, и это тоже было моим фоном. (Я почти никогда не использую foreach в C # с тех пор, как изучил F #)

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

Я начал здесь : очень хороший видеоурок, очень впечатляющий и очень вдохновляющий наставник.

27
ответ дан 26 November 2019 в 23:21
поделиться

Это очень субъективный вопрос.

Я считаю, что Scheme (вариант Lisp) и чтение SICP - это правильно. Вы многому научитесь.

Но для практических целей и если Вы являетесь разработчиком .NET, то, возможно, F# лучше.

8
ответ дан 26 November 2019 в 23:21
поделиться

Why choose? Learn both Lisp and Haskell on your own. No point in learning F# on your own time though. If you need it for work, you'll learn it at work ;)

EDIT: The guy was looking at language to learn for fun. Well, Lisp and Haskell are good candidates since fun is all they are going to be used for (no paid jobs there). He "might" (although unlikely) have opportunity to use F# at work (he is in MS shop), so why learning something in free time when he can be paid learning it at work.

6
ответ дан 26 November 2019 в 23:21
поделиться

Я выучил их все в разной степени и посоветовал бы начать со Scheme (диалект Лиспа) - просто потому, что это легче всего выучить. Haskell и F # имеют статическую типизацию, что является большим преимуществом для реальных проектов, но, IMHO, у них немного "слишком много" синтаксиса, и их не так легко понять, как Scheme.

Есть хорошая реализация схемы для .NET - IronScheme. Вы можете посмотреть мою статью « Игра с IronScheme », чтобы узнать, нравится ли она вам.

5
ответ дан 26 November 2019 в 23:21
поделиться

В настоящее время я смотрю эти видео на канале 9 об основах функционального программирования. Это объясняется с помощью Haskell, но основы применимы ко всем языкам. Я должен сказать, что это очень информативно и легко для понимания.

17
ответ дан 26 November 2019 в 23:21
поделиться

Я не знаю F #, но иногда люблю поиграть с ним. Мой язык - Clojure, который очень функциональный и работает также с CLR, но версия JVM является основной версией.

Он перекрывает вам многое из того, что вы хотите. Основное отличие от F # заключается в том, что Clojure динамически типизирован и имеет действительно хороший способ обработки конкуренции (один из лучших, я бы сказал).

Кстати. Знаете ли вы, что F # был создан потому, что Haskell было слишком сложно запустить в среде CLR? (Это, конечно, не вся история, а ее часть)

8
ответ дан 26 November 2019 в 23:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: