This is the mail archive of the kawa@sourceware.org mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: What is the Development Environment of Choice for Kawa?


> On Feb 18, 2016, at 12:57 PM, Per Bothner <per@bothner.com> wrote:
> 
> 
> 
> On 02/18/2016 08:18 AM, Rafik Naccache [TNTeam] wrote:
>> Hi,
>> 
>> Coming from Clojure Land, I am experimenting with various scheme implementations, guile, chicken, racket,...
>> 
>> As I am experimenting Kawa, I was surprised to see how this scheme can actually beat Clojure in terms of speed and elegance, and want to use it in a serious hobby project in which I have to interact with a great share of imperative Java, a setup that would make Clojure suffer...
>> 
>> But then, I can't find what tool is commonly used by the community to develop Kawa: is it emacs with comint? is it slime with the little swank glue-code? maybe something else?
> 
> Tooling is Kawa's weak spot - though its compile-time warnings and errors
> are better than most "dynamic languages" IMO.
> 
> I'm pretty old-school, so I mostly use Emacs (mainly just editing), the REPL,
> and print statements. (Very rarely I might use jdb to track down an infinite loop.)
> OTOH I write more Java (and lately JavaScript) than I write Scheme â

I write more Scheme than Java, but my solution is the same as Perâs: Emacs and the repl. I got pretty far that wayâ far enough to write a 3D multiplayer network game that Per presented at the 2015 JavaOne conferenceâbut there are disadvantages, as Per said.

I generally use Emacs with scheme mode and Kawa running in an inferior quack process in a buffer. My emacs setup includes an interactive command to run Kawa with a classpath suitable to my project. Whenever I reload definitions or anything else happens that makes me doubt the integrity of the Kawa runtime, I kill the inferior process and restart it with a few keystrokes. It takes less than a second.

Of course, it blows away the runtime state and I have to rebuild everything from scratch, but Iâve generally solved that by writing loader files that bring my runtime back up to snuff in less than a second. Itâs not as good as real Lisp- or Smalltalk-style interactive development, but if youâre coming from the Clojure world then youâre probably not looking for that anyway, and are unlikely to miss it.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]