[racket] enter! and contracts
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