Программирование в реальном времени Haskell
Будучи настоятельным разработчиком уже несколько лет, у меня никогда не было желания изучать функциональное программирование.
Пару месяцев назад я наконец решил научиться Haskell. Это довольно классный язык, но я озадачен тем, как приложение, управляемое событиями, будет запрограммировано на таком языке. Вы знаете хороший учебник об этом?
Примечание: Когда я говорю "реальное приложение", я говорю не о реальном мире, а о готовом приложении. Я просто имею в виду небольшое приложение для примера, просто чтобы понять его. Я думаю, что что-то вроде упрощенной версии windows caculator было бы здорово, а затем, возможно, что-то более сложное.
Ответы
Ответ 1
Когда вы говорите примеры "реального мира", вы, по-видимому, думаете о проблемах, которые по своей сути являются последовательностями или состояниями или делают много ввода-вывода, правильно?
Итак, как насчет игр?
- Frag - это клон Quake, реализованный для бакалавриата (Функциональное программирование и 3D-игры, Mun Hon Cheong, 2005 г.). Здесь показано видео в действии.
- Super Monao Bros. (ранее известный как Super Nario Bros.), ну, возможно, вы, вероятно, можете выяснить, какая игра является клоном из. (Это авторский англоязычный веб-журнал.)
- Purely Functional Retrogames - это серия статей из 4-х частей о том, как писать игры на чисто функциональном языке, объясняя использование Pacman как пример. (часть 2, часть 3, часть 4.)
Или, как насчет X Window Manager, расширяемый клон Emacs текстовый редактор или IDE?
Тогда есть книга, в которой даже есть ваш вопрос уже в названии: Real World Haskell и который также является доступно бесплатно!
Еще одна вещь, на которую вы можете обратить внимание, - это Функциональное реактивное программирование. (Например, он используется в Frag.) Интересная вещь о FRP заключается в том, что она позволяет вам смотреть на проблему, скажем, на графическое программирование с совершенно другого ракурса. Если вы прочитаете главу GUI в книге RWH, вы увидите, что она говорит о том, как вы можете писать графическое приложение, как в C, только лучше. FRP OTOH позволяет вам написать его совершенно по-другому, что даже не возможно в C.
Много раз (я не говорю, что это так в вашем вопросе, но это повторяющийся образец), когда кто-то говорит "но может ли Haskell использоваться в реальном мире", то, что они на самом деле говорят, это "Я знаю, как это сделать на C, и в Haskell я не могу сделать это точно так же, поэтому это должно быть невозможно в Haskell, поэтому Haskell не готов к реальному миру". Но то, чего они пропускают, заключается в том, что может быть совершенно другой и намного лучший способ решить проблему. (Как будто "Erlang не имеет потоков, поэтому его нельзя использовать для реализации параллельных систем".) И FRP - всего лишь один пример.
Ответ 2
Для молниеносных бесед сегодня я собрал этот список приложений Haskell с шоу-хаусом, намеренно исключая все, что только предназначено для программистов:
- darcs (с 2002 года 35 000 мест): Распределенные
система управления версиями с инновационным фокусом на изменениях
состояний.
- xmonad (с 2007 года, 30000 мест): Хорошо известно
менеджер оконной плитки с огромной библиотекой макета и другими
плагины. Сделал его в списке, несмотря на то, что его файл конфигурации был
файл Haskell.
- hledger (с 2007 года, 9000 loc): текстовый файл
основанный на двунаправленном бухгалтерском инструменте, клон
ledger.
- Raincat (с 2008, 2000 loc):
Платформенная игра с кошкой, которая не хочет промокнуть.
- arbtt (с 2009, 2000 loc): Мой
автоматическое отслеживание времени на основе правил. Сделал это в списке как
бесстыдная заглушка; вероятно, не так популярны. Теперь он имеет надлежащую сеть
страница, внесенная Waldir Pimenta.
- detexify (с 2010 года 500 мест):
задней части очень полезного средства поиска символов LaTeX является
написанный в Haskell.
- git-annex (с 2010 года, 28 000
loc): управляет вашими файлами и их местоположением, смесью Dropbox
и git. Написано известным Джои Гессом, который зарабатывал на жизнь от него через
kickstarter
В настоящее время он проводит второй раунд
финансирование!
- Никки и Роботы (с 2010 года, 18 000
loc): Платформенная игра с Никки и, ну, его роботы. это было
выпускается как коммерческая независимая игра и продается через
платите, что-то вроде схемы, но компания, к сожалению, закрылась.
- hoodle (с 2011 года, 13 000 мест): A
примечание и программное обеспечение для аннотации PDF, например
xournal.
- Chordify (с 2012 года?? loc): Анализы
музыка, например. с видео YouTube и вычисляет соответствующие
гитарные аккорды. Закрытое программное обеспечение, но предположительно написанное в Haskell.
(Также представленный в моем блоге, и на слайдах беседы, с хорошими репрезентативными фотографиями каждой программы.)
Ответ 3
xmonad - это событие, управляемое (буквально). Он имеет цикл прослушивателя, который просыпается в событиях, изменяя внутреннее состояние, моделирующее X-сервер, который затем отображается на экране.
http://xmonad.org
Ответ 4
Я однажды нашел этот irc-бот, написанный в haskell:
http://www.haskell.org/haskellwiki/Roll_your_own_IRC_bot
Ответ 5
Вот несколько ссылок по вашему запросу.
В этом объясняется много вещей, которые не "имеют смысл" для императивного программиста о Haskell
Учебник Haskell для программистов C
Этот очень хороший, легкий в использовании учебник
Учите вас Haskell для отличного хорошего
Raytracer, написанный в Haskell
Haskell Raytracer
Вы можете скачать компилятор Glasgow Haskell здесь.
GHC
Ответ 6
вы должны проверить Real World Haskell. Книга свободно доступна и показывает, как Haskell можно применять к реальным проблемам. Я бы не назвал это учебным пособием, потому что он намного более всеобъемлющий.
Ответ 7
Отметьте функциональное реактивное программирование.