The focus of masonclj is not on making code as fast as possible--although there are some Clojure type hints added automatically that might help--but rather, on making it easier to get the full benefits of MASON in idiomatic Clojure code. masonclj
provides functions and macros for two purposes:
• Making it easier to define parameters for control of a model via the GUI and the command line.
• Making it easier to track agents using the MASON inspector facilities, if you use defrecords to implement agents.
Essentially, getting this stuff to work with idiomatic Clojure code--which is mostly functional in style--requires some extra work, and masonclj does most of the work for you.
The masonclj repo includes a toy program illustrating use of masonclj. (My pasta repo contains a full-fledged program.)
Please pass the word on to any Clojure fans you know who want to get into agent-based modeling and might like MASON.
(There are a few minor things to be improved that I know of, but rather than wait until everything is perfect, I thought I'd announce the library now. Feedback welcome.)
(Why not make it easier to write fast code? I've tried this, and making Clojure as efficienct as possible with MASON requires using Clojure in unusual ways that deny the programmer of much of what makes Clojure attractive in the first place.
Java is a better choice for fast MASON code.)
Marshall Abrams, Associate Professor
Department of Philosophy, University of Alabama at Birmingham
Mail: HB 414A, 900 13th Street South, Birmingham, AL 35294-1260; Office: HB 418