Как решение 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!');
}
}
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 имеет свои собственные преимущества, такие как:
1 / 0
as the first item of a list and it will still work if you only used the second item.You can check out following links:
Одним из примеров действующего Haskell является xmonad , «функциональный оконный менеджер, содержащий менее 1200 строк кода».
Есть один хороший ответ на вопрос, что такое язык общего назначения, такой как Haskell подходит для: написания программ в целом.
Для того, для чего он используется на практике, у меня есть три подхода к установлению этого:
Из Haskell :
Haskell - это стандартизированный, универсальный, чисто функциональный язык программирования , с нестрогая семантика и сильная статика набор текста. Назван в честь логика Haskell Curry.
В основном Haskell можно использовать для создания почти всего, что вы обычно создаете с использованием других языков общего назначения (например, C #, Java, C, C ++ и т. Д.).
Из Haskell Wiki :
Haskell имеет широкий спектр применения коммерчески, из авиакосмической и защита, финансы, веб-стартапы, фирмы по проектированию оборудования и газонокосилок производители. Эта страница собирает ресурсы по промышленному использованию Haskell
Согласно Википедии, язык Haskell был создан из-за необходимости объединить существующие функциональные языки в общий, который можно было бы использовать для будущих исследований в области проектирования функциональных языков.
Судя по имеющейся информации, очевидно, что оно переросло свое первоначальное предназначение и используется не только для исследований. Сейчас он считается языком функционального программирования общего назначения.
Если вы все еще спрашиваете себя: «Почему я должен его использовать?», Прочтите раздел Зачем его использовать? Введение в Haskell Wiki .
Это довольно хороший источник информации о Haskell и его использовании:
Я думаю, что люди в этом посте упускают из виду самый важный момент для тех, кто никогда не использовал функциональный язык программирования: расширять свой кругозор. Если вы новичок в функциональном программировании, Haskell заставит вас думать так, как вы никогда раньше не думали. В результате ваше программирование в других областях и на других языках улучшится. Сколько? Трудно определить количественно.
Haskell - это язык программирования общего назначения. Его можно использовать для всего, что вы используете на любом другом языке. Вы не ограничены ничем, кроме вашего собственного воображения. А для чего он подходит? Ну, почти все. Есть несколько задач, в которых функциональный язык не превосходит всех.
И да, я Рейн из Dreamincode. :)
Я также хотел бы упомянуть, что, если вы не читали страницу Википедии, функциональное программирование - это парадигма, как объектно-ориентированное программирование - это парадигма. На всякий случай, если вы не знали. Haskell также функционален в том смысле, что он работает; с этим он работает довольно хорошо.
Тот факт, что язык не является объектно-ориентированным, не означает, что язык чем-либо ограничен. Haskell - это язык программирования общего назначения,