greg
2018-7-7 16:10:53

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.


greg
2018-7-7 16:11:12

For (provide (contract-out [rename orig new contract])), asking about new reports:


greg
2018-7-7 16:11:21

nominal-source-id: new (which is fine)


greg
2018-7-7 16:11:51

source-id: Some like contract wrapper like provide/contract-id-new.0. (Instead it would be helpful it it were orig)


greg
2018-7-7 16:14:25

It’s possible to discover that the id is orig, but involves some gymnastics walking unexpanded source looking for renaming contract-out provides.



greg
2018-7-7 16:21:03

Hmm. Dawns on me that (object-name new) is 'orig. I wonder if that’s a shortcut.


mason.protter
2018-7-7 17:43:43

@mason.protter has joined the channel


lexi.lambda
2018-7-7 17:46:58

@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.


lexi.lambda
2018-7-7 17:49:06

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).


mason.protter
2018-7-7 18:13:28

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?


mason.protter
2018-7-7 18:14:15

Also, how do you find the current performance of Racket? Is it okay for your use cases?