Kawa (Scheme implementation)

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Kawa
Kawa-logo.svg
FamilyLisp
Designed byPer Bothner
DeveloperThe Kawa Community
First appeared9 February 1998; 20 years ago (1998-02-09)
Stable release
3.0 / 2 October 2017; 15 months ago (2017-10-02) (w/R7RS compatibility)
Implementation languageJava, Scheme
PlatformJava virtual machine
OSCross-platform
LicenseMIT
Websitewww.gnu.org/software/kawa
Influenced by
Lisp, Scheme

Kawa is a language framework written in the programming language Java that implements the programming language Scheme, a dialect of Lisp, and can be used to implement other languages to run on the Java virtual machine (JVM). It is a part of the GNU Project.

The name Kawa comes from the Polish word for coffee; a play on words, since Java is another familiar name for coffee.

Integration with Java[edit]

Besides using the language Scheme, Java object fields and methods can be accessed using code such as: (invoke object 'method argument ...). This will invoke a Java method, and does the same thing as object.method(argument, ...) in Java. An object's fields can be accessed with: object:field-name or (invoke object 'field-name). Static (class) methods can be invoked with the function invoke-static. Kawa can be extended with Java code (by creating scheme functions in Java), and combined with other JVM implementations.

How to use[edit]

Kawa can be run normally via the kawa script:

$ kawa [optional arguments] ...

Alternatively, Kawa can be run by hand:

$ java -jar /path/to/kawa/kawa.jar [optional arguments] ...

To compile a Scheme file to a class file, the -C parameter is used:

$ java kawa.repl --main -C file.scm

This will produce file.class, which can be run by typing java file. It is also possible to create an applet or servlet (to compile a servlet, servlet-xxx.jar must be in the CLASSPATH variable).

See also[edit]

External links[edit]