These types are bound to identifiers having the form <TYPENAME>.
(This syntax and most of the names are as in RScheme.)
To find which Java classes these types map into, look in
kawa/standard/Scheme.java.
Note that the value of these variables are instances
of gnu.bytecode.Type,
not (as you might at first expect) java.lang.Class.
The type of keyword values. See Keywords.
The type of (mutable) Scheme strings. This is not the same as (non-mutable) Java strings (which happen to be the same as
<symbol>).
The type of Scheme character values. This is a sub-type of
<object>, in contrast to type<char>, which is the primitive Javachartype.
This type name is a special case. It specifies the class
<java.lang.String>(just as<symbol>does). However, coercing a value to<String>is done by invoking thetoStringmethod 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.Stringis converted as if it was decalred 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.