Clojure 有一些看起来很重要的 GUI 库/框架:
seesaw将 Swing 包装在一个非常简洁的 DSL 中,它当然可以用于声明式地创建 GUI 界面:
(defn -main [& args]
(invoke-later
(-> (frame :title "Hello",
:content "Hello, Seesaw",
:on-close :exit)
pack!
show!)))
Incanter提供了相当多的图形和可视化功能(包括 JFreeChart 等)。不是一个通用的 GUI 库,但如果您专注于统计数据,则非常有用:
;; show a histogram of 1000 samples from a normal distribution
(view (histogram (sample-normal 1000)))
还有一些简洁的示例代码弹出,用于在 Clojure 中包装 JavaFX 2.0 - 这更像是一个声明性 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!"))))))