Подтвердить что ты не робот

Программирование в реальном времени Haskell

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

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

Примечание: Когда я говорю "реальное приложение", я говорю не о реальном мире, а о готовом приложении. Я просто имею в виду небольшое приложение для примера, просто чтобы понять его. Я думаю, что что-то вроде упрощенной версии windows caculator было бы здорово, а затем, возможно, что-то более сложное.

4b9b3361

Ответ 1

Когда вы говорите примеры "реального мира", вы, по-видимому, думаете о проблемах, которые по своей сути являются последовательностями или состояниями или делают много ввода-вывода, правильно?

Итак, как насчет игр?

Или, как насчет 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

Ответ 5

Вот несколько ссылок по вашему запросу.

В этом объясняется много вещей, которые не "имеют смысл" для императивного программиста о Haskell

Учебник Haskell для программистов C

Этот очень хороший, легкий в использовании учебник

Учите вас Haskell для отличного хорошего

Raytracer, написанный в Haskell

Haskell Raytracer

Вы можете скачать компилятор Glasgow Haskell здесь. GHC

Ответ 6

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