On Oct 8, 2011, at 9:49 PM, Ryan Culpepper wrote: > But in your alternative, > > (provide (contract-out [f contract-of-f])) > > the contract of f is *still* not manifest in the module. Instead of chasing > down f, we have to chase down contract-of-f. We've also duplicated > code/knowledge (the association between f and contract-of-f) with all the > problems that entails. Also, we've cluttered up the namespace with these > contract-of-* bindings.
Perhaps you are right. Perhaps we should go even further and every 're-provide' should implicitly propagate contracts. > Of course, duplicating the contract expression would make it manifest, but it > would aggravate the ill effects from code duplication. My experience: partly > because of its lazy-require tricks, the db library has some duplication of > contracts, and I hate it. I've also eliminated internal contracts to avoid > having to repeat them in the externally-visible modules. I consider that last part *good*. So perhaps it did push you in the right direction. -- Matthias _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users