Typed Racket provides some additional utility functions to facilitate typed programming.
Verifies that the argument satisfies the constraint. If no predicate is provided, simply checks that the value is not #f.
(with-asserts ([id maybe-pred] ...) body ...+)
Guard the body with assertions. If any of the assertions fail, the program errors. These assertions behave like assert.
A predicate for determining if v is not #<undefined>.
A predicate for the Index type.
(typecheck-fail orig-stx maybe-msg maybe-id)
| msg-string maybe-id =
| #:covered-id id
Explicitly produce a type error, with the source location or orig-stx. If msg-string is present, it must be a literal string, it is used as the error message, otherwise the error message "Incomplete case coverage" is used. If id is present and has type T, then the message "missing coverage of T" is added to the error message.