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.