Kawa (Scheme implementation)

Last updated
Kawa
Kawa-logo.svg
Family Lisp
Designed by Per Bothner
Developer The Kawa Community
First appeared10 June 1996;28 years ago (1996-06-10) [1]
Stable release
3.1.1 [2] / 16 January 2020;5 years ago (2020-01-16) (w/R7RS compatibility)
Implementation language Java, Scheme
Platform Java virtual machine
OS Cross-platform
License MIT
Website www.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.

Contents

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

Kawa is notable as one of the few programming languages with support for units of measure in the form of quantities. [ citation needed ]

Integration with Java

Besides using the language Scheme, Java object fields and methods can be accessed using code such as: (invokeobject'methodargument...). 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 (invokeobject'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.

See also

References

  1. "Change log" . Retrieved 2022-04-04.
  2. "Kawa: News – Recent Changes". gnu.org. Retrieved 2020-02-14.
19581960196519701975198019851990199520002005201020152020
 LISP 1, 1.5, LISP 2(abandoned)
  Maclisp
  Interlisp
  MDL
  Lisp Machine Lisp
  Scheme  R5RS R6RS R7RS small
  NIL
  ZIL (Zork Implementation Language)
  Franz Lisp
  Common Lisp  ANSI standard
  Le Lisp
  MIT Scheme
  XLISP
  T
  Chez Scheme
  Emacs Lisp
  AutoLISP
  PicoLisp
  Gambit
  EuLisp
  ISLISP
  OpenLisp
  PLT Scheme   Racket
  newLISP
  GNU Guile
  Visual LISP
  Clojure
  Arc
  LFE
  Hy