Хотя все согласны с тем, что функционально-реактивное программирование (FRP) - это способ реализации графического пользовательского интерфейса, в Haskell пока не существует хорошо разработанной библиотеки для этого. Я думаю, что основными причинами являются:
- Балансировка выразительности VS использование ресурсов затруднено (утечки места, проблемы с синхронизацией). Чем выразительнее будет ваша модель FRP, тем сложнее ее реализовать и при этом гарантировать эффективность. Пространство дизайна все еще исследуется.
- Удобство API. FRP хорошо подходит для реализации функций вида
Time -> MouseInput -> Picture
, но платформы GUI, такие как GTK + или Cocoa, не работают таким образом, и вопрос заключается в том, как выразить последние в стиле FRP, не усложняя традиционный стиль.
Другими словами, исследования FRP еще не завершены.
При этом некоторые практические реализации уже существуют, например Flapjax , язык, который компилируется в JavaScript.
В любом случае, никто не может помешать вам реализовать собственную библиотеку FRP, адаптированную для конкретной цели, и извлечь из этого большую выгоду. Люк Палмер сделал это успешно, и сейчас я тоже пытаюсь это сделать. (Я предпочел бы тратить свое время на FRP, а не на изменяемые переменные.)