On this page:
:  type
:  print-type
:  query-type/  args
:  query-type/  result

5 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.


> (:type Number)

(U Exact-Number Inexact-Complex Real Float-Imaginary Single-Flonum-Imaginary)

[can expand further: Exact-Number Inexact-Complex Real]

> (:type Real)

(U Nonpositive-Real Nonnegative-Real)

[can expand further: Nonpositive-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)


(:print-type e)

Prints the type of e. This prints the whole type, which can sometimes be quite large.


(:query-type/args f t ...)

Given a function f and argument types t, shows the result type of f.


(:query-type/result f t)

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.