Kawa (Scheme implementation)
Family | Lisp |
---|---|
Designed by | Per Bothner |
Developer | The Kawa Community |
First appeared | 9 February 1998 |
Stable release | 3.0
/ 2 October 2017R7RS compatibility) (w/ |
Implementation language | Java, Scheme |
Platform | Java virtual machine |
OS | Cross-platform |
License | MIT |
Website | www |
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]
1955 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2019 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Lisp 1.5 | ||||||||||||||
Maclisp | ||||||||||||||
Interlisp | ||||||||||||||
Lisp Machine Lisp | ||||||||||||||
Scheme | ||||||||||||||
NIL | ||||||||||||||
Common Lisp | ||||||||||||||
Le Lisp | ||||||||||||||
T | ||||||||||||||
Emacs Lisp | ||||||||||||||
AutoLISP | ||||||||||||||
OpenLisp | ||||||||||||||
PicoLisp | ||||||||||||||
EuLisp | ||||||||||||||
ISLISP | ||||||||||||||
newLISP | ||||||||||||||
Racket | ||||||||||||||
GNU Guile | ||||||||||||||
Visual LISP | ||||||||||||||
Clojure | ||||||||||||||
Arc | ||||||||||||||
LFE | ||||||||||||||
Hy |