6.3
7 Exploring Types
In addition to printing a summary of the types of REPL results, Typed Racket
provides interactive utilities to explore and query types.
The following bindings are only available at the Typed Racket REPL.
| (:type maybe-verbose t)
 | 
|  | 
| | maybe-verbose |  | = |  |  |  |  |  | | |  | #:verbose | 
 | 
Prints the type 
t. If 
t is a type alias
(e.g., 
Number), then it will be expanded to its representation
when printing. Any further type aliases in the type named by 
t
will remain unexpanded.
If #:verbose is provided, all type aliases are expanded
in the printed type.
| Examples: | 
| | > (:type Number) |  | | (U Inexact-Complex Exact-Number Real Float-Imaginary Single-Flonum-Imaginary) |  | [can expand further: Inexact-Complex Exact-Number Real] | 
 |  |  |  | > (:type Real) |  | | (U Negative-Real Nonnegative-Real) |  | [can expand further: Negative-Real Nonnegative-Real] | 
 |  |  |  | > (:type #:verbose Number) |  | | (U 0 |  |    1 |  |    Byte-Larger-Than-One |  |    Positive-Index-Not-Byte |  |    Positive-Fixnum-Not-Index |  |    Negative-Fixnum |  |    Positive-Integer-Not-Fixnum |  |    Negative-Integer-Not-Fixnum |  |    Positive-Rational-Not-Integer |  |    Negative-Rational-Not-Integer |  |    Float-Nan |  |    Float-Positive-Zero |  |    Float-Negative-Zero |  |    Positive-Float-No-NaN |  |    Negative-Float-No-NaN |  |    Single-Flonum-Nan |  |    Single-Flonum-Positive-Zero |  |    Single-Flonum-Negative-Zero |  |    Positive-Single-Flonum-No-Nan |  |    Negative-Single-Flonum-No-Nan |  |    Exact-Imaginary |  |    Exact-Complex |  |    Float-Imaginary |  |    Single-Flonum-Imaginary |  |    Float-Complex |  |    Single-Flonum-Complex) | 
 |  |  | 
 | 
Prints the type of e, which must be
an expression. This prints the whole
type, which can sometimes be quite large.
| Examples: | 
| | > (:print-type (+ 1 2)) |  | Positive-Index |  |  |  | > (:print-type map) |  | | (All (c a b ...) |  |   (case-> |  |    (-> (-> a c) (Pairof a (Listof a)) (Pairof c (Listof c))) |  |    (-> (-> a b ... b c) (Listof a) (Listof b) ... b (Listof c)))) | 
 |  |  | 
 | 
Given a function f and argument
types t, shows the result type of f.
Given a function f and a desired
return type t, shows the arguments types f should be given to
return a value of type t.