From: Robert H. <Rob...@cs...> - 2001-09-08 01:01:32
|
I intend the second interpretation. The explicit raise is indistinguishable from the implicit raise caused by matching an expression against a refutable pattern. The issue has nothing whatsoever to do with "generating names", whatever those are. Bob -----Original Message----- From: Dave Berry [mailto:da...@ta...] Sent: Friday, September 07, 2001 6:50 PM To: Robert Harper; 'Dave Berry'; sml...@li... Subject: RE: [Sml-implementers] Could raise be non-expansive? At 11:54 07/09/2001, Robert Harper wrote: >I mistakenly reversed the senses of "expansive" and "non-expansive", as must >be obvious to everyone. Sorry about that. Hi Bob, I'm afraid I'm now confused, as I can see two possible interpretations of your message. Please can you tell me which you intended? Example: exception Foo val it = raise Foo raise Foo has type 'a; can 'a be generalised? First interpretation: Yes, 'a can be generalised. The definition should be changed to allow this, thus removing an inconsistency between an explicit raise and the implicit raise caused by a refutable pattern. Second interpretation: No, 'a can not be generalised. The definition should be changed to also ban the generalisation of type variables in any expression matched against a refutable pattern, regardless of whether the rhs expression is expansive. FWIW, the Commentary only discusses the question of generating exception names. If I understand correctly, simply raising an exception doesn't generate a new name. Dave. |