The type of Scheme strings.
(Implemented using java.lang.String for immutable strings,
and gnu.lists.FString for mutable strings.
Both of these implement the interface java.lang.CharSequence.
In the future, we may change the representation for strings
containing “surrogate characters”, for efficient indexing.)
(Compatibility note: Previous versions of Kawa implemented
always used gnu.lists.FString.)

Variable: character

The type of Scheme character values. This is a sub-type of
Object, in contrast to type char, which is the
primitive Java char type.

Variable: vector

The type of Scheme vectors.

Variable: procedure

The type of Scheme procedures.

Variable: input-port

The type of Scheme input ports.

Variable: output-port

The type of Scheme output ports.

Variable: String

This type name is a special case. It specifies the class
java.lang.String.
However, coercing a value to String is done by
invoking the toString method on the value to be coerced.
Thus it "works" for all objects.
It also works for #!null.

When Scheme code invokes a Java methods any parameter
whose type is java.lang.String is converted
as if it was declared as a String.

More will be added later.

A type specifier can also be one of the primitive Java types.
The numeric types long, int, short,
byte, float, and double are converted from the
corresponding Scheme number classes. Similarly, char
can be converted to and from Scheme characters. The type
boolean matches any object, and the result is false
if and only if the actual argument is #f.
(The value #f is identical to Boolean.FALSE,
and #t is identical to Boolean.TRUE.)
The return type void indicates that no value is returned.

A type specifier can also be a fully-qualified Java class name
(for example java.lang.StringBuffer). In that case,
the actual argument is cast at run time to the named class.
Also, java.lang.StringBuffer[] represents
an array of references to java.lang.StringBuffer objects.