Typed Scheme comes with a number of other types and type constructors, corresponding (mostly) to primitive types provided by PLT Scheme.
The base types represent primitive data
number Any number
str A string
symbol A symbol
boolean Either #t or #f
keyword A PLT Scheme literal keyword
top Any value
The following constructors are parameteric in a single type argument
(Listof t) Homogenous lists of t
(Vectorof t) Homogenous vectors of t
(Option t) Either t or #f
(cons s t) is the pair containing s as the car
and t as the cdr
(dom ... -> rng) is the type of functions from the (possibly-empty)
sequence dom ... to the rng type.
(dom ... rst .. -> rng) is the type of functions from the
(possibly-empty) sequence dom ... with an optional trailing
sequence of rst to the rng type. Note: .. is a
part of the syntax of these types.
(U t ...) is the union of the types t ...
(case-lambda fun-ty ...) is a function that behaves like all of
the fun-tys. The fun-tys must all be function
types constructed with ->.
(t t1 t2 ...) is the instantiation of the parametric type
t at types t1 t2 ...
(pred t) is a predicate for type t
(All (v ...) t) is a parameterization of type t, with
type variables v ...
(values t ...) is the type of a sequence of multiple values, with
types t .... This can only appear as the return type of a
function.
v where v is a number, boolean or string, is the singleton type containing
only that value
i where i is an identifier can be a reference to a type
name or a type variable
Other types cannot be written by the programmer, but are used internally and may appear in error messages.
#<struct:n (t ...)> is the type of structures named
n with field types t. There may be multiple such
types with the same printed representation.
(mu n t) is a recursive type where n is bound to the
recursive type in the body t
<n> is the printed representation of a reference to the
type variable n