Speaking of identifier-binding
, I’ve encountered a limitation: It can’t report the original definition id in the case of a renaming contract-out.
For (provide (contract-out [rename orig new contract]))
, asking about new
reports:
nominal-source-id
: new
(which is fine)
source-id
: Some like contract wrapper like provide/contract-id-new.0
. (Instead it would be helpful it it were orig
)
It’s possible to discover that the id is orig
, but involves some gymnastics walking unexpanded source looking for renaming contract-out provides.
Hmm. Dawns on me that (object-name new)
is 'orig
. I wonder if that’s a shortcut.
@mason.protter has joined the channel
@greg The identifier provided by contract-out
is fundamentally a different binding. If it were the same binding, it would have to refer to the same value, which wouldn’t have the contract added to it. contract-out
works by generating a new binding to hold the contracted version of a value.
It does seem like it could be useful for tooling to have some other, separate way to communicate the original definition site, though. Usually, when I ask DrRacket to show me where an identifier is bound, I don’t want it to show me the location of contract-out
, I want it to show me the location of the uncontracted definition. But this is generally a minor complaint (since it’s possible to jump to definition a second time to get the original definition).
So i’ve heard a bit about this whole Racket on Chez thing but I haven’t really seen much buzz about it in the Racket community. Is this something Racket users are interested in?
Also, how do you find the current performance of Racket? Is it okay for your use cases?