Какой пакет 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.