provide-spec
( choose-out proc-expr[true-idfalse-id]...)
;`num` is an internal representation;set this to `#t` in modules that use `num` values;addition for `num` values;wrapper: convert `num` addition to Racket addition(num-value(num-+(numv0)(numv1))));export `num-+` or `racket-+` depending on the importing modulenum[num-+racket-+])));familiar client, uses the `num` representation#<num>
;foreign client: uses Racket numbers4
Typed Racket uses a similar protocol to decide whether an identifier exported from a typed module should be protected with a contract. A #lang typed/racket module expands (via #%module-begin ) to code that sets a flag similar to the num-client? flag in the example above.
procedure
true-idtrue-id:identifier?false-id:identifier?
procedure
x:any/c
procedure
id:identifier?