Где пользователи функционального графического интерфейса?

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


person Tim Matthews    schedule 14.08.2010    source источник
comment
Разговоры о графических интерфейсах frp как о превосходящих императивных графических интерфейсах не вызовут у вас особой любви. Но интересный вопрос.   -  person    schedule 14.08.2010
comment
возможный дубликат Возможно ли функциональное программирование графического интерфейса?   -  person Don Stewart    schedule 14.08.2010
comment
@ Дон, это не обман второго b'cos, я бы не стал спрашивать об этом, не зная смысла, а не первого, потому что я на самом деле связался с этим в вопросе.   -  person Tim Matthews    schedule 15.08.2010


Ответы (3)


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

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

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

person Heinrich Apfelmus    schedule 28.07.2011
comment
Кроме того, модель сигналов Ur / Web для написания клиентской части, которая компилируется в AJAX, основана на FRP, но на самом деле это не FRP. - person Robin Green; 04.08.2011

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

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

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

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

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

person Heinrich Apfelmus    schedule 14.08.2010
comment
JFYI, Flapjax можно и нужно использовать как библиотеку, отдельный язык с компилятором планируется исключить. - person thSoft; 27.07.2011

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

person mgold    schedule 30.10.2013