6.2
6 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 Exact-Number Inexact-Complex Real Float-Imaginary Single-Flonum-Imaginary) | [can expand further: Exact-Number Inexact-Complex 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. 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.