Сложный графический интерфейс в clojure

Я только начал использовать clojure сегодня (однако, я много использовал Java и знаю функциональные парадигмы), и мне было интересно, было ли неплохо построить приложение clojure с разумным сложным интерфейсом (перетаскивание, падение, панорамирование, масштабирование,...) с помощью Swing?

Я могу представить, что многие нормальные колебательные логики (особенно в отношении OO) должны быть обойдены так или иначе.

Я предполагаю, что все возможно, но возможно ли это оправданным образом?

Я имею в виду, не похоже ли на то, чтобы ударить ноготь с помощью отвертки вместо молотка?

У кого-нибудь есть опыт создания GUI с clojure (и, конечно же, это качание идеального кандидата для этого?)

Спасибо!

Ответ 1

Я нашел относительно простым использование Swing для создания достойных пользовательских интерфейсов в Clojure. У вас есть несколько вариантов о том, как это сделать:

Ответ 2

Одной из замечательных особенностей подсистемы Clojure программной транзакционной памяти является то, что она позволяет вам устанавливать часы на переменные: всякий раз, когда переменная изменяется (ничем) ваш обратный вызов выполняется. Это поддается мощному виду программирования GUI, где графический интерфейс пользователя автоматически обновляется на основе состояния ваших переменных.

Краткий, но нетривиальный пример GUI Swing подробно описан в http://www.paullegato.com/blog/swing-clojure-gui-black-scholes/.

Ответ 3

Поскольку другие упоминают ответы, связанные с качанием, я задам вам один вопрос: есть ли какое-либо требование. Хотя писать код Swing в clojure более приятен, чем на Java, он все еще Swing, со всей его многословием и раздражениями, особенно в сложном приложении с жесткими требованиями к набору.

Рассматриваете ли вы веб-интерфейс, где clojure подходит гораздо более естественно? Или SWT или QT Jambi, который также можно использовать для работы с помощью Clojure.