These types are predefined with the following names.
Instead of plain
typename you can also use
<typename> with angle brackets,
but that syntax is no longer recommended, because it doesn’t
“fit” as well with some ways type names are used.
To find which Java classes these types map into, look in
Note that the value of these variables are instances
not (as you might at first expect)
The numeric types (
are discussed in Numerical types.
are discussed in Characters.
An arbitrary Scheme value - and hence an arbitrary Java object.
The type of Scheme symbols.
(Implemented using the Java class
(Compatibility: Previous versions of Kawa implemented
a simple Scheme symbol using an interned
The type of keyword values. See Keywords.
The type of Scheme lists (pure and impure, including the empty list).
The type of Scheme pairs. This is a sub-type of
The type of Scheme strings.
java.lang.String for immutable strings,
gnu.lists.FString for mutable strings.
Both of these implement the interface
In the future, we may change the representation for strings
containing “surrogate characters”, for efficient indexing.)
(Compatibility: Previous versions of Kawa
The type of Scheme character values. This is a sub-type of
Object, in contrast to type
char, which is the
The type of Scheme vectors.
The type of Scheme procedures.
The type of Scheme input ports.
The type of Scheme output ports.
This type name is a special case. It specifies the class
However, coercing a value to
String is done by
toString method on the value to be coerced.
Thus it "works" for all objects.
It also works for
When Scheme code invokes a Java method, any parameter
whose type is
java.lang.String is converted
as if it was declared as a
A parameter object, as created by
This type can take a type parameter (sic):
(define-constant client ::parameter[Client] (make-parameter #!null))
This lets Kawa know that reading the parameter (as in
returns a value of the specified type (in this case
More will be added later.
A type specifier can also be one of the primitive Java types.
The numeric types
double are converted from the
corresponding Scheme number classes. Similarly,
can be converted to and from Scheme characters. The type
boolean matches any object, and the result is
if and only if the actual argument is
#f is identical to
#t is identical to
The return type
void indicates that no value is returned.
A type specifier can also be a fully-qualified Java class name
java.lang.StringBuffer). In that case,
the actual argument is cast at run time to the named class.
an array of references to
Used to specify that the type is unknown, and is likely to change
Warnings about unknown member names are supressed
(a run-time name lookup is formed).
An expression of type
dynamic is (statically) compatible with