Какие управляемые событиями приложения реализованы в Haskell? - PullRequest
16 голосов
/ 18 января 2010

В последнее время я смотрю на Haskell, и мне кажется, что это очень хороший способ посмотреть на проблемы программирования с альтернативной точки зрения - по крайней мере, альтернативы моему обычному императиву (у меня сильный фон C ++). *

Тем не менее, все статьи, которые я вижу, имеют дело с одними и теми же проблемами программирования:

  • Парсеры
  • Составители
  • Проблемы числовых вычислений

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

Мне также могут быть интересны примеры приложений с графическим интерфейсом (или систем, управляемых событиями, в целом), которые реализованы в Haskell.

Ответы [ 6 ]

15 голосов
/ 18 января 2010

Вот пара ключевых слов Google для вас:

5 голосов
/ 18 января 2010

xmonad - оконный менеджер X11, написанный на Haskell.

Кроме того, рассмотрение того, как реализованы различные библиотеки GUI Haskell , может дать некоторые идеи о том, как создаются интерактивные программы на Haskell.

4 голосов
/ 18 января 2010

Вот пример использования epoll для реализации веб-сервера, управляемого событиями: http://haskell.org/haskellwiki/Simple_Servers

3 голосов
/ 20 января 2010

«Функционально-реактивное программирование» уже упоминалось, но оно может показаться сложным, если вы смотрите на него впервые (и если вы просматриваете некоторые продвинутые статьи, оно будет выглядеть сложным, независимо от того, как долго вы изучал это :-)). Тем не менее, есть несколько очень хороших статей, которые помогут вам понять это:

  • Создание реактивной анимации Конала Эллиота показывает «библиотеку комбинаторов» (общий стиль программирования в функциональных языках) для описания анимации. Он начинается с очень простых примеров, но также показывает более интересный «реактивный» бит во второй части.

  • Yampa Arcade - это более развитая демонстрация функционально-реактивного программирования. Он использует некоторые расширенные функции Haskell (например, стрелки), но все еще очень удобочитаем. Выполнить его на самом деле может быть сложнее, но это отличное чтение.

  • Школа выражений Haskell Пола Худака - книга, которая учит Haskell использовать мультимедиа и графику (включая некоторые анимации и т. Д.). Это отличное чтение, но оно занимает больше времени, так как это целая книга: -).

Я нахожу свой путь к функциональному программированию через F #, который немного менее "чист" по сравнению с Haskell, но дает вам полный доступ к библиотекам .NET, поэтому легко использовать "реальные" технологии из функциональный язык. Если вам интересно, есть пара примеров на моем блоге .

3 голосов
/ 18 января 2010

xmonad управляется событиями - см. Основной цикл обработки событий, который принимает сообщения от X-сервера и отправляет их в чисто функциональный код, который, в свою очередь, выводит состояние на экран.

3 голосов
/ 18 января 2010

Взгляните на эту статью викибукс , это базовый wxHaskell учебник. В частности, смотрите раздел События .

Я рекомендую провести некоторое время с Haskell и FP в целом, прежде чем приступить к разработке полноценного приложения, чтобы вы могли лучше ознакомиться с Haskell, поскольку он сильно отличается от C ++

...