Где функциональные пользователи графического интерфейса? - PullRequest
37 голосов
/ 14 августа 2010

Было проведено много исследований способов создания графического интерфейса на функциональном языке.Есть библиотеки для push / pull frp, frp на основе стрелок и, возможно, другие превосходные исследования. Многие люди , похоже, согласны с тем, что это более естественный способ, но почти все, кажется, используют библиотеки обязательного связывания, такие как gtk2hs и wxhaskell.Даже места, рекомендованные как хорошие руководства , учат связыванию с этими простыми императивными библиотеками.Почему бы не Гис на основе исследований FRP?

Ответы [ 3 ]

26 голосов
/ 28 июля 2011

Прошел почти год с тех пор, как мой предыдущий ответ изменился в мире функционально-реактивного программирования (FRP).

  • В частности, я создал реактивный банан , небольшую библиотеку для FRP в Хаскеле. Хотя некоторые функции по-прежнему отсутствуют, это уже отличный способ реализовать GUI в чисто функциональном стиле, о чем свидетельствует коллекция примеров . Вот скриншот: enter image description here

  • Как и прежде, в веб-браузере также есть Flapjax , библиотека JavaScript для FRP.

23 голосов
/ 14 августа 2010

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

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

Другими словами, исследования FRP еще не завершены.

При этом некоторые практические реализации уже существуют, например Flapjax , язык, который компилируется в JavaScript.

В любом случае, никто не может помешать вам реализовать собственную библиотеку FRP, адаптированную для конкретной цели, и извлечь из этого большую выгоду. Люк Палмер сделал это успешно, и сейчас я тоже пытаюсь это сделать. (Я предпочел бы тратить свое время на FRP, а не на изменяемые переменные.)

7 голосов
/ 30 октября 2013

Старая ветка, я знаю, но Elm ( elm-lang.org ) быстро становится центром "реального мира" FRP.Он компилируется в JavaScript, и на нем написан сайт Elm.

...