<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi James,<div class=""><br class=""><i class="">Why</i> do you say that inferring type parameters (which I think is what you mean by “populating the <i class="">retained generic</i> parameters via inference”) changes the operational semantics?</div><div class=""><br class=""></div><div class="">Yes, it does this when you reflect on the available type information. In that sense, α-renaming changes the operational semantics too, since you can observe the change in variable name and change behavior accordingly.</div><div class=""><br class=""></div><div class="">Yes, it also does this if we want “precise exceptions”, because inference will potentially replace a <i class="">NoSuchMethod</i> Exception at some point in a program with a <i class="">TypeError</i> at an earlier point. </div><div class=""><br class=""></div><div class="">I think that we have agreed that these are both OK things to do.</div><div class=""><br class=""></div><div class="">I believe that the case you are worried about is when type inference creates a <i class="">TypeError</i> in a program that would <b class=""><i class="">not</i></b> have raised a <i class="">NoSuchMethod</i> Exception (e.g, because the “bad” value is never used). Is that right? Arn’t such errors part of the cost of doing business with types?</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>Andrew</div><div class=""><br class=""></div></body></html>