Инструменты GUI, которые активно разрабатываются и хорошо документированы для Haskell
Я потратил большую часть своего утреннего и дневного времени на работу с графическими интерфейсами в Haskell, так как мне нужны некоторые возможности визуализации и взаимодействия, и я не люблю писать свои основные функции в Haskell, а затем передний конец написан в другом графическом интерфейсе; Я бы предпочел сделать все это с одного языка. Лучшая часть этой лучшей части была потрачена на компиляцию и исправление исходного кода, а также ошибки Google для компиляции в Google.
Я потратил много времени на чтение вопросов SO, много времени на haskell.org и много времени на чтение документации. То, с чем я столкнулся, - очень большое количество устаревшей или плохо документированной информации. Я могу сварить это на три вещи:
-
Недостаток опций, построенных поверх привязок Gtk+. Я не очень забочусь о Gtk +, в основном потому, что нахожу, что это довольно неприятно смотреть, особенно на OS X. Схватка о том, что пользовательский интерфейс выглядит неуместным и/или просто уродливым, может показаться глупым, но это важно для меня. Особенно, если я хочу, чтобы другие люди использовали любую из создаваемых мной программ.
-
wxHaskell, который стабилен и невероятно прост в установке, но многие из существующих обучающих программ, похоже, для wx-0.1x, а соглашения для подключения wxWidgets 2.9.x docs к wx-0.90.x очень пятнистые и труднодоступные, когда они даже существуют.
-
qtHaskell, который, кажется, в основном заброшен (исправьте меня, если я ошибаюсь), только компилируется с более новыми версиями GHC после применения годового патча и выплескивает огромное количество предупреждений, указывающих на то, что они скоро станут компиляцией ошибок в новых версиях GHC.
В сущности, я ищу ответ Хаскелла на Java Swing; библиотека, которая надежна, поддерживается, хорошо документирована, легко начать работу, делает попытку быть родной по внешнему виду, может идти в ногу с темпами развития GHC, а не с высоким риском отказа. Кажется, что это абсолютно нулевые рамки GUI, но тогда кажется, что большинство "официальных" ресурсов /wiki/pages/docs, связанных с графическими интерфейсами GUI, безмерно потеряны, поэтому я решил обратиться к сообществу, чтобы узнать, есть ли что-то, что я просто не находил. Я не очень беспокоюсь о том, что инфраструктура является кросс-платформой, только если она работает с современными версиями OS X.
Повторяю, я действительно не ищу кого-то, чтобы отправить мне ссылку на haskell.org или WikiBook. Я был там, и мне не нравилось то, что я видел. Большая часть информации там просто устарела, что она создает больше работы, а не меньше.
Я понимаю, что мои "требования" немного экстремальны, особенно для языка с меньшим сообществом вроде Haskell, но я надеялся, что кто-то из них может мне помочь. Между тем, я намерен просто попытаться выехать из wxHaskell или qtHaskell, пока не добьюсь успеха или не умру.
Надеюсь, я не нападаю, как грубый или измотанный.
Ответы
Ответ 1
wxHaskell - это хорошо, да, и моя библиотека среднего уровня GUI. Я признаю, что основное внимание уделялось обновлению кода перед документами в новой версии.
Для современного, функционально-реактивного программирования веселого материала поверх него я выступаю за реактивный банан, который активно поддерживается, и добавленная выгода, которую Генрих Апфельмус может появиться здесь, чтобы ответить на ваши вопросы.
Ответ 2
Threepenny-gui является самым последним конкурентом в пространстве библиотек GUI Haskell.
Его основной точкой продажи является то, что его очень легко установить, поскольку он использует веб-браузер в качестве дисплея. Также легко начать с.
С другой стороны, он даже не пытается иметь собственный внешний вид - пользовательский интерфейс построен исключительно на HTML. (Это может измениться в будущем, поскольку мы можем использовать XUL). Кроме того, API по-прежнему очень популярен, поэтому будьте готовы к тому, что новые основные версии библиотеки, скорее всего, нарушат обратную совместимость. (С другой стороны, это означает, что он активно развивается.: -))
(Раскрытие: Я автор/сопровождающий пакет из трех пенни-ги.)
Ответ 3
Я чувствую твою боль; этот ответ - попытка предоставить некоторые альтернативы, которые могут быть достаточно хороши и, возможно, помогут вам в поиске.
Во-первых, существует язык, называемый Concurrent Clean. Предполагается, что он похож на Haskell, имеет поддержку графического интерфейса и предназначен для написания приложений реального мира. В некоторых отношениях он отличается; например, его ввод-вывод основан на уникальных типах, а не на Monads, что, насколько мне известно, является хорошей вещью:). Вот ссылка:
http://wiki.clean.cs.ru.nl/Clean
Затем я выкопал для Haskell, скомпилированного в JVM, в надежде, что он будет скопирован в библиотеках Java, ala Clojure. Нет кубиков. То, что я нашел, было нитью, обсуждавшей недостаток и проблемы,
Haskell на JVM?
Из этой темы, однако, были подняты два других варианта. Один из них - Фреге:
http://code.google.com/p/frege/
Другой - CAL:
https://github.com/levans/Open-Quark
Там также работают над функциональным реактивным программированием в Haskell. Он должен включать такие функции, как графические интерфейсы, хотя независимо от того, действительно ли вы получите GUI, это другое дело:
http://www.haskell.org/haskellwiki/Functional_Reactive_Programming
Это печально. Здесь у нас есть JVM и .NET и все же zilch для Haskell. Это хуже, чем это;.NET продемонстрировал тревожную тенденцию отказываться от перспективных реализаций. Что бы ни случилось с IronScheme, IronLisp и IronHaskell? Насколько мне известно, все мертвы.
Нехорошо: (