Для чего на самом деле полезен Haskell? [закрытый]

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

10 ответов


что некоторые общие пользы для этого язык?

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

Я надеюсь, что это дает вам представление о том, насколько широк ваш вопрос, если на него нужно ответить со всей определенностью.


один пример Haskell в действие xmonad, "featureful window manager менее чем в 1200 строках кода".


с Haskell Wiki:

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

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

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

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


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

и да, я Рейн из Dreamincode. :)

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

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


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

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

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

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

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

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


с Хаскелл:

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

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


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


Это довольно хороший источник информации о Haskell и его использовании:

С открытым исходным кодом Haskell релизы и рост