From: John Cowan Date: Tue, 5 Jun 2007 16:04:52 -0400 Subject: [Formal] Identifiers beginning with "->" considered useless Submitter: John Cowan Issue type: Defect Priority: Minor Component: Lexical syntax Report version: 5.93 Summary: Identifiers beginning with "->" considered useless. R5.93RS extends the lexical syntax of R5RS identifiers to allow them to begin with "->", presumably for the sake of the R5.91 procedures "->exact" and "->inexact". The former names of these procedures, "exact->inexact" and "inexact->exact", were misleading, since they accepted both exact and inexact arguments. However, 5.93 renamed these "exact" and "inexact" per formal comment #203. I believe that the principles given in that comment are of a general nature such that names like "->foo" are always better given as "foo". While I am no fan of arbitrary restrictions on names, I am not in favor of arbitrary exceptions either. I suggest that "->" prefixes should be removed for R6RS. RESPONSE: Many existing Scheme implementations prior to R5.93RS already supported identifiers starting with ->. (Many readers would classify any lexeme as an identifier starting with - for which `string->number' returns #f.) As a result, a significant amount of otherwise portable Scheme code used identifiers starting with ->, which are a convenient choice for many names. Therefore, R5.93RS legalizes these identifiers. The separate production in the grammar is not particularly elegant. However, designing a more elegant production that does not overlap with representations of number objects or other lexeme classes has proved to be surprisingly difficult. Therefore, the comment has not been adopted.