Для чего используется Haskell в реальном мире?

В Haskell много ажиотажа, однако трудно получить информацию о том, как он используется в реальных приложениях. Какие проекты/использования Haskell наиболее популярны и почему они превосходны в решении этих проблем?

Ответ 1

Каковы некоторые общие применения для этого языка?

Быстрая разработка приложений.

Если вы хотите узнать "почему Haskell?", То вам нужно рассмотреть преимущества функциональных языков программирования (взято с http://c2.com/cgi/wiki?AdvantagesOfFunctionalProgramming):

  • Функциональные программы имеют тенденцию быть гораздо более краткими, чем их аналоги ImperativeLanguage. Часто это приводит к повышению производительности программиста

  • FP поощряет быстрое создание прототипов. Таким образом, я думаю, что это лучшая парадигма разработки программного обеспечения для ExtremeProgrammers... но что я знаю?

  • FP является модульным в измерении функциональности, где ObjectOrientedProgramming является модульным в измерении различных компонентов.

  • Возможность съесть свой торт и съесть его. Представьте, что у вас сложная система обработки сообщений OO - каждый компонент может вносить изменения в состояние в зависимости от сообщения, а затем пересылать сообщение некоторым объектам, на которые он ссылается. Разве это не было бы слишком круто, чтобы иметь возможность легко откатить каждое изменение, если какой-то объект глубоко в иерархии вызовов решил, что сообщение ошибочно? Как насчет истории разных государств?

  • Многие домашние задачи сделаны для вас: деконструкция структур данных (PatternMatching), хранение привязок переменных (LexicalScope с замыканиями), строгая типизация (TypeInference), GarbageCollection, выделение хранилища, использовать ли в штучной упаковке (указатель на значение) или в штучной упаковке (значение напрямую ) представление...

  • Безопасная многопоточность! Неизменяемые структуры данных не подчиняются условиям гонки данных и, следовательно, не должны быть защищены от блокировок. Если вы всегда размещаете новые объекты, а не деструктивно манипулируете существующими, блокировка может быть скрыта в системе выделения и GarbageCollection.

Помимо этого у Haskell есть свои преимущества, такие как:

  • Четкий, интуитивно понятный синтаксис, основанный на математических обозначениях.
  • Составьте список, чтобы создать список на основе существующих списков.
  • Лямбда-выражения: создавайте функции, не давая им явных имен. Так проще обрабатывать большие формулы.
  • Haskell полностью прозрачен. Любой код, который использует ввод/вывод, должен быть помечен как таковой. Таким образом, он поощряет вас отделять код с побочными эффектами (например, вывод текста на экран) от кода без (вычислений).
  • Ленивая оценка - действительно приятная особенность:
    • Даже если что-то обычно вызывает ошибку, оно все равно будет работать, если вы не используете результат. Например, вы можете поместить 1/0 в качестве первого элемента списка, и он все равно будет работать, если вы используете только второй элемент.
    • Проще написать программы поиска, такие как этот решатель судоку, потому что он не загружает каждую комбинацию сразу - он просто генерирует их по мере продвижения. Вы можете сделать это на других языках, но только Haskell делает это по умолчанию.

Вы можете проверить следующие ссылки:

Ответ 2

Я думаю, что люди в этом сообщении не имеют наиболее важного момента для тех, кто никогда не использовал функциональный язык программирования: расширяя свой разум. Если вы новичок в функциональном программировании, Haskell заставит вас думать так, как вы никогда раньше не думали. В результате ваше программирование в других областях и на других языках улучшится. Сколько? Трудно количественно.

Ответ 3

Существует один хороший ответ на то, что язык общего назначения, такой как Haskell, хорош для: написания программ в целом.

Для чего он используется на практике, у меня есть три подхода к установлению этого:

Указывает, что он хорош для графики, сетей, системного программирования, структур данных, баз данных, разработки, обработки текста...

И наконец, мое мнение о том, на что он действительно силен:

Надеюсь, это даст вам представление о том, насколько широка ваша проблема, если на нее нужно ответить с какой-либо спецификой.

Ответ 4

Одним из примеров Haskell в действии является xmonad, "функциональный менеджер окон в менее чем 1200 строках кода".

Ответ 5

Из Haskell Wiki:

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

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

На основе имеющейся информации очевидно, что она переросла первоначальную цель и используется гораздо больше, чем исследование. В настоящее время он считается функциональным языком программирования общего назначения.

Если вы все еще спрашиваете себя: "Почему я должен его использовать?", затем прочитайте Зачем использовать его? в разделе Haskell Введение в Wiki.

Ответ 6

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

И да, я Rayne от Dreamincode.:)

Я также хотел бы упомянуть, что, если вы не читали страницу в Википедии, функциональное программирование - это парадигма, такая как объектно-ориентированное программирование - парадигма. На всякий случай ты не знаешь. Haskell также функционирует в том смысле, что он работает; он хорошо работает при этом.

Просто потому, что язык не является объектно-ориентированным языком, это не означает, что язык ограничен чем-либо. Haskell - это язык программирования общего назначения, а также как общая цель Java.

Ответ 7

У меня классный, facebook создал автоматизированный инструмент для переписывания PHP-кода. Они анализируют источник в абстрактном синтаксическом дереве, делают некоторые преобразования:

if ($f == false) -> if (false == $f)

Я не знаю почему, но это, кажется, их особый стиль, а затем они довольно печатают его.

https://github.com/facebook/lex-pass

Мы используем haskell для создания небольших доменных языков. Огромное количество обработки данных. Веб-разработка. Веб-пауки. Тестирование приложений. Написание сценариев администрирования системы. Backend-скрипты, которые общаются с другими участниками. Мониторинг сценариев (у нас есть DSL, который прекрасно работает вместе с munin, упрощает запись правильного кода монитора для ваших приложений.)

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

Ответ 8

Из Хаскелла:

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

По сути, Haskell можно использовать для создания практически всего, что вы обычно создаете, используя другие языки общего назначения (например, С#, Java, C, C++ и т.д.).

Ответ 9

Например, для разработки интерактивных веб-приложений HTML5 в реальном времени. См. Elm, компилятор которого реализован на Haskell и синтаксис которого много заимствует из Haskell.