Какой пакет FRP выбрать?

Я только начинаю изучать мир функционально-реактивного программирования в Haskell, и я хотел бы экспериментировать с программированием GUI (с gtk, из-за существенной привязки) в реакционной настройке.

Теперь я немного искал грейпфрут, реактивный банан и бастер, и я хотел бы получить какое-либо свидетельство радости/ужаса от использования того или иного пакета.

Все, что у меня есть, - это предварительные оппоненты:

  • Я не возражаю, если я сам привяжу пакет FRP к gtk, поскольку у меня есть амбивалентное чувство об абстрактной идее бэкэнда (что у грейпфрута есть).

  • В то время как я нахожу теорию типов интересной, я также ценю простые кодировки для реальных программ, которые, похоже, немного убирают записи grapfruit.

То есть, если, конечно, некоторые из вас не убеждают меня думать иначе: -)

Ответ 1

Если вы просто хотите использовать обычный FRP и оставаться рядом с графическим интерфейсом GUI, а не использовать "готовые" абстракции над ним, реактивный банан - самый жизнеспособный вариант, на мой взгляд. Он явно привязан к привязке к существующим фреймворкам, предназначен для использования в реальном мире (не делая ничего слишком экспериментального, семантически, что может вызвать проблемы) и т.д.

Вы можете посмотреть reactive-banana-wx, чтобы узнать, как привязать фреймворк к реактивной банане. Это очень просто; Я написал быстрое привязку к Gtk2Hs один раз (потерял код сейчас, к сожалению), и файл не прошел более 50 строк. Это была почти прямая транслитерация кода реактивного банана-wx.

Я бы порекомендовал против использования Buster по той простой причине, что не обновлялся с 2009 года и не основывается на GHC 7.

Другие "ориентированные на производство" рамки FRP sodium (аналогично реактивно-банановому, но он имеет динамическое переключение событий (которое скоро появится в реактивном банане, но не в еще) и понятие "разделов" для concurrency, однако оно просто появилось и еще не приняло принятие) и netwire (стрелка FRP, совсем другое существо к реакционноспособному банану и натрий).

Ответ 2

Я сам экспериментировал с FRP, и до сих пор единственным, кто работал у меня, был Reactive-Banana. Я никогда не смотрел на Грейпфрут или большинство других, потому что они устарели и не казались, что они, вероятно, будут обновлены или поддержаны вообще. Я коротко посмотрел на netwire, но, честно говоря, вся теория стрельбы в этом меня отпустила, и мне было очень сложно понять, как делать простые вещи.

В отличие от этого, мне удалось получить довольно хороший набор привязок к SDL, написанный в Reactive-Banana, с несколькими иконами на этом пути. Другое дело в пользу Reactive-Banana - это то, что Хейнрайх очень активен в сообществе и часто дает полезные ответы, когда вы сталкиваетесь с проблемами. Просто просмотрите различные реакционно-банановые вопросы здесь, и вы увидите, что он ответил довольно многим из них, и он обычно очень активен в обсуждениях FRP в списках рассылки Haskell.