[racket] enter! and contracts

From: Asumu Takikawa (asumu at ccs.neu.edu)
Date: Wed Aug 10 22:12:51 EDT 2011

Whoops, meant to actually send this to the list:

On 2011-08-11 01:13:50 +0200, Wojciech Kaczmarek wrote:
>    The problem I ran into with this workflow is that contracts for modul
>    functions seem to *be not triggered when the module was loaded via
>    enter!.*

It seems that when a module is entered via enter! then higher order
contracts are not applied. So a contract like (-> number? number?) will
not be applied assuming you are using provide/contract. First order
contracts like number? are still checked.

In general, the provide forms seem to be ignored since, for example,
a renamed identifier using "rename-out" will be undefined if you use
enter!.

You can use define/contract if you need both enter! and higher-order
contract checking. This sets up the contract boundary at the definition
site, not the module.

Cheers,
Asumu


Posted on the users mailing list.