Kawa (Scheme implementation)
| Family | Lisp |
|---|---|
| Designed by | Per Bothner |
| Developer | The Kawa Community |
| First appeared | 9 February 1998 |
| Stable release | 3.0
/ 2 October 2017 (w/R7RS compatibility) |
| 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 | ||||||||||||||