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

Другие вопросы по тегам