Какой пакет FRP выбрать?
Я только начинаю изучать мир функционально-реактивного программирования на Haskell, и я хотел бы поэкспериментировать с программированием GUI (с gtk, из-за существенной привязки) в условиях реакции.
Теперь я немного посмотрел на Грейпфрут, Реактив-Банан и Бастер, и я хотел бы получить какое-либо свидетельство радости / ужаса от использования того или иного пакета.
Все, что у меня есть, это предварительные мнения:
Я не возражаю против связывания пакета FRP с gtk, поскольку у меня двойственное чувство по поводу абстрагированной идеи бэкэнда (которую имеет Грейпфрут)..
Хотя я нахожу теорию типов интересной, я также ценю простые кодировки для реальных программ, которые, кажется, немного отстранены от записей grapfruit-записей...
То есть, если, конечно, некоторые из вас не убеждают меня думать иначе:-)
2 ответа
Если вы просто хотите использовать обычный FRP и оставаться ближе к структуре графического интерфейса пользователя, а не использовать заранее подготовленную абстракцию, то, по моему мнению, реактивный банан является наиболее жизнеспособным вариантом. Он явно ориентирован на привязку к существующим фреймворкам, предназначен для "реального" использования (не делая ничего слишком экспериментального, семантически, что может вызвать проблемы) и так далее.
Вы можете взглянуть на реактивный-банан-wx, чтобы увидеть, как связать основанную на событиях структуру с реактивным-бананом. Это очень просто; Однажды я написал быстрое связывание с Gtk2H (к сожалению, сейчас потерял код), и файл не превышал 50 строк. Это была почти прямая транслитерация кода реактивного банана-WX.
Я бы рекомендовал не использовать Buster по той простой причине, что он не обновлялся с 2009 года и не основывается на GHC 7.
Другими "ориентированными на производство" средами FRP являются натрий (аналогично реактивному банану, но он имеет динамическое переключение событий (которое скоро придет к реактивному банану, но еще не готово) и концепцию "разделов" для параллелизма; однако, он только что вышел и еще не видел усыновления) и netwire (стрелка FRP, существо, совершенно отличное от реактивного банана и натрия).
Я сам экспериментировал с FRP, и пока единственное, что работает для меня, это Reactive-Banana. Я никогда не изучал Грейпфрут или большинство других, потому что они устарели и, похоже, их вообще не обновляли и не поддерживали. Я кратко посмотрел на netwire, но, честно говоря, вся теория стрел в нем оттолкнула меня, и у меня было много проблем, когда я пытался понять, как делать даже простые вещи.
В отличие от этого, мне удалось получить довольно хороший набор привязок к SDL, написанный на Reactive-Banana, всего за несколько ошибок. Еще одна вещь в пользу Reactive-Banana заключается в том, что Heinreich очень активен в сообществе и часто дает полезные ответы, когда вы сталкиваетесь с проблемами. Просто просмотрите различные вопросы о реактивном банане, и вы увидите, что он ответил на довольно многие из них, и он обычно очень активен в обсуждениях FRP в списках рассылки Haskell.