Putting on a heretical hat, it seems that trying to utilize a GUI library designed for Java's imperative programming model from a functional language is an exercise in frustration trying to pound a square peg through a round whole. While I like Chouser's example (it's very cool, and makes a good demo) I'm not sure how realistic this is for a non-trivial GUI app. How do people see the thread model used by Swing working with Clojure's?
On Wed, Oct 8, 2008 at 6:19 PM, Michael Beauregard <[EMAIL PROTECTED]> wrote: > > I spent a few hours writing a macro that would allow a more > declarative gui than the usual swing approach. I didn't finish it, but > concluded that this could be quite doable. For example, I was aiming > for a macro that would allow the following declarative style: > > [Note that I don't have the actual code or example that I had working > since that is on my laptop hibernating at home atm.] > > ; rough example > (make-ui > '(JFrame {:title "The title"} > (JLabel {:id fooLabel :text "Some label"}) > (JButton {:id btn1 :label "Click me" :actionPerformed (fn [evt] > (println "clicked")) }) > (JButton {:label "Apply" :actionPerformed someFn :enabled false }))) > > This doesn't address the functional/stateless impedance mismatch, but > would make defining guis simpler. However, the basic idea is to > represent the containment hierarchy inherent in a gui with the nesting > of lisp expressions. The map of attributes would be applied as setters > on each component after it is created. The event handlers such as > ":actionPerformed" are harder, but also doable. > > The nasty part that I haven't spent any time thinking about is the > LayoutManager gong show in swing. That sounds much harder to solve > declaratively without writing a bunch of LMs that support simplifying > the declarative style. > > Michael > > On Wed, Oct 8, 2008 at 3:37 PM, Bob <[EMAIL PROTECTED]> wrote: >> >> Yes, I'm very interested in this question as well. I'm learning >> clojure and its my first attempt at functional programming. And I was >> thinking of writing a swing GUI program to try it out. But it would >> seem the GUI state is going to be a mass of mutable state which >> doesn't map well to the functional style. What am I missing? Does >> anyone have a non-trivial example of a Swing program done the Clojure >> way? >> >> Thanks much, >> Bob >> >> On Oct 8, 2:07 pm, Mitch <[EMAIL PROTECTED]> wrote: >>> I'm interested in doing a GUI program in clojure, but the functional >>> style of clojure doesn't seem to blend too well with the normal Java >>> GUI libraries. Does anybody have any advice on using clojure for GUI >>> programming? I've seen Rich's ants demo, but that isn't really an >>> event driven GUI program (just a nice display for his simulation). >>> Has anyone tried using of the GUI building tools for Java with >>> clojure? I feel like these could help a lot, but I'm not sure. >>> >>> Thanks, >>> Mitch >> > >> > > > > -- Tom Emerson [EMAIL PROTECTED] http://www.dreamersrealm.net/~tree --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---