Maps vs records

Thanks @joinr.

Some of the problems have to do with design choices that I suspect Rich H. et al. would not want to change, and I don’t think it would be reasonable of me to ask Sean Luke, the main author of MASON, to modify it just for Clojure. MASON well designed from the point of view of Java traditions, and it’s complex. The intersection of the set of MASON users and Clojure users is pretty small.

There is or was some interest among MASON people in figuring out how to use MASON with other languages, but other than what I’ve done, the experiments using MASON in other languages were all imperative in nature. There was a Scheme example like that.

I’m amazed at how widespread functional programming interest has become in the last decade or two, but my sense is that it’s still a fraction of all programmers.

I’d love it if others would use MASON with Clojure, maybe using masonclj, but I realize that it’s a tough sell. Assuming that my macros are enough for a person’s needs, and it’s never necessary to look under the hood of the macros, where you have to understand things like gen-class, you still have to develop enough understanding of Java that you can understand MASON, and then use proxy and/or reify to set up the classes needed to configure the GUI for your app. (I thought about trying to make that easier from Clojure, but MASON gives you a great deal of flexibility in configuring the GUI with Java subclassing and method overrides, so any macros I would write would only work for a small number of cases. I will want more than any macro I could write to try to make the GUI code easier.)

So to use MASON with Cojure, you end up having to be pretty comfortable with Clojure, Java, and basic Clojure interop. There are lots of people with those skills, sure, but then again, take the intersection of that set and the set of people interested in ABM (and who aren’t sufficiently satisfied with NetLogo), and it’s going to be small.