




Это зависит от того, что вы хотите сделать:
Haskell - это более чисто функциональный язык из двух.
F# - это скорее гибридный язык, и он не является чисто функциональным, но имеет отличный набор библиотек базовых классов, которые вы можете использовать для легкого выполнения современных задач в Windows или Mono.
Но это с другой платформой, он не заслуживает голоса против.
F# - это язык интерфейса командной строки; следовательно, это та же платформа.
спасибо ребята, исправленное описание.
Я бы сказал F#, так как вы можете получить доступ ко всей структуре .Net. Однако это скорее библиотечная вещь.
Я бы сказал, это зависит от того, почему вы это изучаете. Если вы делаете это для знакомства с чисто функциональным языком, выбирайте Haskell. Но если вы определенно собираетесь использовать язык для большего, чем это, F# может быть лучшим выбором.
Я бы выбрал Haskell. HackageDB - отличный набор библиотек, написанных специально для этого языка. В случае F# вам придется использовать в основном библиотеки, написанные без учета функционального языка, поэтому они не будут такими «элегантными» в использовании. Но, конечно, это во многом зависит от того, сколько функционального программирования вы хотите выполнять, и от ограничений проекта, для которого вы хотите его использовать. Даже «общее назначение» не означает, что его следует использовать во всех случаях;)
Вы можете найти это сообщение в блоге Нила Митчелла информативным:
Комментарии тоже поучительны.
Я предпочитаю Haskell.
Утверждение Джона Харропа о том, что у Haskell плохие инструменты, заставило меня немного задуматься, поскольку я совершенно не согласен с этим. Я думаю, что проблема здесь отчасти в стиле разработки. Давайте сравним несколько характеристик F# и GHC, связанных с инструментами:
В F# есть обширные визуальные инструменты, а в GHC их нет. Для меня отсутствие визуальных инструментов не имеет значения: я работаю с vi, командной строкой Unix и сильно настраиваемой системой сборки. Отсутствие поддержки моего стиля разработки на F# было бы для меня очень мучительным. С другой стороны, если вы предпочитаете работать в среде типа Visual-Studio, у вас будет совершенно противоположное мнение.
Насколько я понимаю, F# и / или .NET имеют очень хороший отладчик. GHC имеет только ограниченный отладчик, работающий в интерпретаторе. Я много лет не использовал отладчик (в основном из-за использования разработки через тестирование), и когда вы работаете в основном с чистыми функциями, как в Haskell, отладчик гораздо менее необходим. Так что для меня отсутствие этого инструмента не имеет значения.
Библиотеки. Это в основном зависит от того, какие библиотеки вам нужны, не так ли? Множество хороших библиотек не поможет, если там нет нужной, а наличие множества плохо спроектированных библиотек может оказаться не столь полезным. У Haskell определенно меньше библиотек, чем у .NET, но у него есть разумный выбор, а качество дизайна API во многих из них очень и очень высокое.
Я не знаю, на что похож интерфейс F# с библиотеками нативного кода, но GHC отлично подходит для этого из-за фантастического FFI. Я написал сервер Windows DDE полностью на Haskell (да, не на языке C, даже для того, чтобы иметь дело с обратными вызовами из библиотек Windows C), и это заняло значительно меньше времени и было значительно проще, чем делать то же самое на C или C++. Если вам нужны интерфейсы с собственным кодом, Haskell, безусловно, лучший выбор.
Хороший момент - «непредсказуемость» использования памяти и производительности. Haskell кажется мне на самом деле достаточно предсказуемым, если вы знаете, что делаете, но вы не будете знать, что делаете, когда начнете, и вам придется многому научиться. F# намного больше похож на другие языки .NET.
В целом, этот вопрос, вероятно, больше связан с платформой, чем с языком: огромная разница между «миром Unixy» GHC, генерирующего собственный код, и «миром Windowsy» F#, работающего на .NET, не является проблемой языка.
Все по справедливости. Я думаю, что Windows Presentation Foundation - очевидный контрпример в контексте библиотек: он гораздо лучше разработан и более мощный, чем все, что доступно в Haskell (например, Qt). Я также посоветовал бы техническим пользователям серьезно подумать о смене платформы только на использование F#. Я предпочитаю Linux Windows, но .NET сейчас далеко впереди всего, что доступно в Linux или Mac OS X ...
Я думаю, что Джон Харроп по какой-то причине серьезно разочарован в Haskell. Это просто неправда, что он не используется за пределами академических кругов, на самом деле он широко используется в инвестиционном банкинге и гораздо чаще, чем F# и OCaml, и не зря. Если вам нужна работа по функциональному программированию, изучите Haskell, поскольку для программистов на Haskell рекламируется гораздо больше сообщений, чем F# или OCaml. Я уверен, что F# станет популярным, поскольку за ним стоит Microsoft, и он начинает с нуля, но на данный момент Haskell имеет явное преимущество.
Вероятно, 2 или 3 года назад OCaml лидировал в области практических функциональных языков, но с тех пор Haskell обогнал его с большим количеством библиотек, большим количеством функций, лучшей производительностью и более широким коммерческим использованием.
F# принадлежит Microsoft, следовательно, Haskell.