www.delorie.com/gnu/docs/kawa/kawa_58.html   search  
 
Buy GNU books!


Kawa, the Java-based Scheme system

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.1 Standard Types

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.

Variable: <object>
An arbitrary Scheme value - and hence an arbitrary Java object.

Variable: <number>
The type of Scheme numbers.

Variable: <quantity>
The type of quantities optionally with units. This is a sub-type of <number>.

Variable: <complex>
The type of complex numbers. This is a sub-type of <quantity>.

Variable: <real>
The type of real numbers. This is a sub-type of <complex>.

Variable: <rational>
The type of complex numbers. This is a sub-type of <real>.

Variable: <integer>
The type of Scheme integers. This is a sub-type of <rational>.

Variable: <symbol>
The type of Scheme symbols.

Variable: <keyword>
The type of keyword values. See section 7.4 Keywords.

Variable: <list>
The type of Scheme lists (pure and impure, including the empty list).

Variable: <pair>
The type of Scheme pairs. This is a sub-type of <list>.

Variable: <string>
The type of (mutable) Scheme strings. This is not the same as (non-mutable) Java strings (which happen to be the same as <symbol>).

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> (just as <symbol> does). 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 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 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.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

  webmaster     delorie software   privacy  
  Copyright 2003   by The Free Software Foundation     Updated Jun 2003