В Clojure есть несколько библиотек / каркасов с графическим интерфейсом, которые выглядят превосходно:
seesaw оборачивает Swing в очень лаконичный DSL, который, безусловно, может использоваться для декларативного создания интерфейсов GUI:
(defn -main [& args]
(invoke-later
(-> (frame :title "Hello",
:content "Hello, Seesaw",
:on-close :exit)
pack!
show!)))
Incanter предоставляет довольно много функций графического отображения и визуализации (среди прочего, JFreeChart). Не совсем общая библиотека графического интерфейса, но очень полезная, если вы сосредоточены на статистике:
;; show a histogram of 1000 samples from a normal distribution
(view (histogram (sample-normal 1000)))
Существует также несколько полезных примеров кода для оборачивания JavaFX 2.0 в Clojure - опять-таки это больше похоже на декларативный DSL:
(defn -start [app stage]
(eval
(fx Stage :visible true :width 300 :height 200 :title "hello world"
:scene (fx Scene
(fx BorderPane :left (fx Text "hello")
:right (fx Text "Right")
:top (fx Text "top")
:bottom (fx Text "Bottom")
:center (fx Text "In the middle!"))))))