Подтвердить что ты не робот

Где функциональные пользователи gui?

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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