Предложения по библиотеке GUI на Haskell [закрыто]

14

Как говорит сам Haskell Wiki :

Для Haskell существует большое количество библиотек GUI. К сожалению, нет стандартного, и все они более или менее неполны. В целом, шпоны низкого уровня идут хорошо, но они на низком уровне. Абстракции высокого уровня довольно экспериментальны. Необходима поддерживаемая библиотека графического интерфейса пользователя среднего уровня.

Профессор в моем колледже попросил меня и трех других специалистов по информатике рассмотреть возможность работы над библиотекой графического интерфейса для Haskell. Его первоначальной идеей для проекта было написать слой поверх OpenGL, который имитировал морфическую библиотеку, найденную в Smalltalk ; однако, это всего лишь предложение, и другая система определенно заслуживает рассмотрения.

Это подводит нас к актуальному, состоящему из нескольких частей вопросу.

  1. К какому уровню абстракции должна стремиться наша библиотека? Хаскельская вики явно указывает на то, что библиотека GUI среднего уровня предпочтительнее; однако, библиотека высокого уровня все еще будет приветствоваться.
  2. На чем должна строиться наша библиотека? (Напр. OpenGL)
  3. Какую существующую библиотеку графического интерфейса вы хотели бы видеть в нашей библиотеке (если она есть) и почему? (Например, PyGame, Morphic, Swing и т. Д.)
  4. Какие функции вы бы хотели, чтобы наша библиотека реализовала или не использовала? Например, хорошие люди в Gnome могут утверждать, что кнопка минимизации не нужна.
  5. Есть ли у вас какие-либо общие предложения?
  6. Какое умное имя вы бы дали этой воображаемой библиотеке? (Например, HOT - Haskell Opengl Toolkit; HAWT - Haskell Advanced Windowing Toolkit)
Bface
источник
2
Mimic Qt или GTK, это прекрасно
Anto
Вы уже видели haskell.org/haskellwiki/Reactive ?
SK-logic

Ответы:

7

Я хотел бы увидеть библиотеку, которая элегантна и проста в использовании с Haskell. Остальные технические детали должны служить этой цели, а не переопределять ее. Таким образом, мои $ 0,02.

Не основывайте его на существующем наборе инструментов , таком как Qt, GTK, FLTK или ... - это сильно ограничит вас и, вероятно, принесет вам гораздо больше боли, чем прибыли. PyQt достаточно забавен и надуман, а Python и C ++ являются чрезвычайно гибкими императивными ОО-языками. Полагаю, в случае с Хаскеллом все было бы гораздо сложнее.

Зависит только от самых основных графических примитивов , а затем опираться на это. OpenGL хорош, но даже что-то более простое (только для 2D, например, SDL) тоже подойдет. Это даст вам максимальную гибкость и максимальную мобильность. См. Smalltalk / Morphic, Java / Swing, TCL / Tk.

Сделайте это концептуально маленьким. Графический интерфейс сложен, нет необходимости добавлять еще один Everest для лазания. Надеюсь, Haskell поможет сделать его компактным и модульным.

Чтобы получить бонусные очки, сделайте его скином. Как минимум, знайте, как применять системные цвета (и только системные цвета) для рисования всего набора элементов управления, чтобы приложение, созданное с помощью этого инструментария, не было занудой. Как максимум, знайте, как заставить Win32 / Gtk / Qt / Cocoa отрисовывать ваши элементы управления, чтобы они выглядели полностью нативно. Основная скинируемость проста и логична; достичь полного внешнего вида довольно сложно.

Кроме того, пожалуйста, запустите root и оставьте управление окнами основной графической системе - X, Windows, что угодно. Невыполнение этого требования поставит под вопрос здравомыслие пользователей и существенно затруднит принятие.

Как обычно, «делайте простые вещи простыми, а сложные вещи возможными» + «избегайте трютинга Тьюринга, где все возможно, но нет ничего интересного, просто« + »сделайте как можно проще, но не проще».

Имя наименее важная вещь. Из всех популярных инструментов GUI только Qt имеет какое-то умное имя. Ряд популярных проектов сменил названия, даже в полете (Firefox, урожденная Firebird). Есть что-то, чтобы назвать, и вы назовете это.

Удачи!

9000
источник
1

После разговора со всеми участвующими учащимися и предоставления этому вопросу достаточно времени, чтобы вызвать интерес, я считаю, что мы пришли к консенсусу по нескольким ключевым вопросам в моем первоначальном посте.

К какому уровню абстракции должна стремиться наша библиотека? Хаскельская вики явно указывает на то, что библиотека GUI среднего уровня предпочтительнее; однако, библиотека высокого уровня все еще будет приветствоваться.

Мы решили стремиться к библиотеке среднего уровня по предложению Haskell Wiki.

На чем должна строиться наша библиотека? (Напр. OpenGL)

Мы выбрали OpenGL из-за его популярности и поддержки. В качестве основы мы будем использовать проекты-оболочки GLUT или GLFW Haskell.

Какую существующую библиотеку графического интерфейса вы хотели бы видеть в нашей библиотеке (если она есть) и почему? (Например, PyGame, Morphic, Swing и т. Д.)

Мы выбрали Morphic после долгих споров между ним и PyGame. Мы не рассматривали QT или GTK, так как оба уже имеют один или несколько проектов библиотеки Haskell в активной разработке .

Какое умное имя вы бы дали этой воображаемой библиотеке? (Например, HOT - Haskell Opengl Toolkit; HAWT - Haskell Advanced Windowing Toolkit)

Это все еще для обсуждения. Мы решили не рассматривать HAWT и вместо этого смотрим на:

  • HOT - Haskell Opengl Toolkit
  • HOG - Haskell Opengl Graphics (Сделайте свой проект активным!)
  • Schön
Bface
источник