18.6.8 Kawa Scheme
The Kawa Scheme Language
Kawa Scheme Tutorial
Kawa on GitLab
Kawa is a general-purpose programming language that runs on the Java
platform.
-  Runs on the Java platform, with no native code needed
 -  Extends the Scheme language, following the R7RS specification from 2013
 -  Programs run fast - roughly as fast as Java programs, and much faster than
other “scripting languages”.
 -  Full, convenient, and efficient access to the huge set of Java libraries; you
can access objects, methods, fields, and classes without run-time overhead.
 -  Start-up times are fast.
 -  Scripts are simple Kawa source files that can run as an application or
command.
 -  You can embed Kawa as a scripting language for Java applications.
 -  Deployment is easy and flexible. You just need the Kawa jar file.
 -  Kawa provides the usual read-eval-print loop
 -  Kawa has builtin pretty-printer support, and fancy formatting.
 -  Kawa supports class-definition facilities, and separately-compiled modules.
 -  You can allocate  and initialize objects with a compact  “builder” syntax. It
works out-of-the-box (with no run-time overhead)
 -  JavaFX programming is simpler.
 -  Flexible shell-like functionality, including process literals.
 -  Web page  scripts are  easy to  write and  install with  self-configuring web
servers, optionally using servlets and XML literals.
 -  Arrays and sequences have a lot of flexibility
 -  Many useful features for mathematics and numerics
-  infinite-precision rational numbers and complex numbers.
 -  Compile-time optimization of arithmetic with the use of type declarations
and inference.
 -  A quantity is a real number with a unit, such as 3cm.
 -  Quaternions are a 4-dimensional generalization of complex numbers.
 -  Unsigned primitive integer types (ubyte, ushort, uint, ulong) are
implemented efficiently without object allocation.
 
 -  A lazy value wraps an expression which is evaluated only when it is needed.
 -  Kawa provides a framework for implementing other programming languages,
-  comes with incomplete support for CommonLisp, Emacs Lisp, and EcmaScript,
and XQuery.