On Dec 17, 2012, at 6:10 PM, Neil Toronto wrote: >>> >>> `plot' is written in untyped Racket. There's no performance problem with >>> typed plots at all; in fact, using `plot/typed' from TR code ends up >>> checking exactly the same contracts for the same plots. `plot/typed' is >>> just another end-user that happens to re-export everything with types >>> attached. >> >> I don't understand this last part at all. You have >> >> -- an untyped file M >> -- a typed file T that imports M and re-exports everything from there with >> types >> >> How can it possibly be the case that a client C imports T and does NOT pay >> for the contracts that T's types impose on the call chain? > > That would only happen if client C is untyped. I wouldn't expect an untyped > client to (require plot/typed), but I suppose it could happen.
Wait. This is the line I don't understand: C is TYPED. It requires T. T is TYPED. It requires M. M is UNTYPED. If c in C calls t in T, this first call does not add any overhead. OK. But t is really m from M obtained with a require/typed. [Alternatively, it is redefinition that calls such a function.] It is this call from t to m that imposes the overhead. Why are you saying that "There's no performance problem with typed plots at all"? _________________________ Racket Developers list: http://lists.racket-lang.org/dev