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

Как решение Playnox, но с элегантным встроенным каталогом:

function delete_directory($dirPath){
 if(is_dir($dirPath)){
  $objects=new DirectoryIterator($dirPath);
   foreach ($objects as $object){
    if(!$object->isDot()){
     if($object->isDir()){
      delete_directory($object->getPathname());
     }else{
      unlink($object->getPathname());
     }
    }
   }
   rmdir($dirPath);
  }else{
   throw new Exception(__FUNCTION__.'(dirPath): dirPath is not a directory!');
  }
 }
456
задан Wojciech Danilo 7 May 2019 в 02:27
поделиться

8 ответов

What are some common uses for this language?

Rapid application development.

If you want to know "why Haskell?", then you need to consider advantages of functional programming languages (taken from http://c2.com/cgi/wiki?AdvantagesOfFunctionalProgramming):

  • Functional programs tend to be much more terse than their ImperativeLanguage counterparts. Often this leads to enhanced programmer productivity

  • FP encourages quick prototyping. As such, I think it is the best software design paradigm for ExtremeProgrammers... but what do I know?

  • FP is modular in the dimension of functionality, where ObjectOrientedProgramming is modular in the dimension of different components.

  • The ability to have your cake and eat it. Imagine you have a complex OO system processing messages - every component might make state изменяется в зависимости от сообщения, а затем пересылает сообщение некоторым объекты, на которые он ссылается. Было бы слишком круто иметь возможность легко откатить каждое изменение, если какой-то объект глубоко в вызове иерархия решила, что сообщение некорректно? Как насчет истории различные состояния?

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

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

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

  • Четкий, интуитивно понятный синтаксис, вдохновленный математической нотацией.
  • Составление списка для создания списка на основе существующих списков.
  • Лямбда. выражения: создавать функции, не давая им явных имен. Так проще обрабатывать большие формулы.
  • Haskell полностью ссылочно прозрачен . Любой код, использующий ввод-вывод, должен быть отмечен как таковой. Таким образом, это побуждает вас отделить код с побочными эффектами (например, вывод текста на экран) от кода без (вычислений).
  • Ленивое вычисление - действительно приятная функция:
    • Even if something would usually cause an error, it will still work as long as you don't use the result. For example, you could put 1 / 0 as the first item of a list and it will still work if you only used the second item.
    • It is easier to write search programs such as this sudoku solver because it doesn't load every combination at once—it just generates them as it goes along. You can do this in other languages, but only Haskell does this by default.

You can check out following links:

303
ответ дан 22 November 2019 в 22:55
поделиться

Одним из примеров действующего Haskell является xmonad , «функциональный оконный менеджер, содержащий менее 1200 строк кода».

29
ответ дан 22 November 2019 в 22:55
поделиться

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

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

84
ответ дан 22 November 2019 в 22:55
поделиться

Из Haskell :

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

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

6
ответ дан 22 November 2019 в 22:55
поделиться

Из Haskell Wiki :

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

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

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

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

18
ответ дан 22 November 2019 в 22:55
поделиться

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

Релизы и развитие Haskell с открытым исходным кодом

3
ответ дан 22 November 2019 в 22:55
поделиться

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

227
ответ дан 22 November 2019 в 22:55
поделиться

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

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

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

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

13
ответ дан 22 November 2019 в 22:55
поделиться
Другие вопросы по тегам:

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