Gregor N. Purdy writes: > "...we're guaranteed that the key of the resulting pair is a string, > that the string [...] contains a valid identifier, and that the > compiler can check the validity before the program starts." > > We aren't told what validity checking the compiler is doing. I figure > its looking for some in-scope declaration of that identifier, but what > would such a declaration look like?
I take "valid identifier" to mean something which is syntactically valid as an identifier, rather than something that is in the finite set of identifiers which C<form> actually uses. Using the C<< => >> it's possible to construct pairs in which the key is not a valid identifier: 'Hello there' => 'contains a space', '2b' => 'starts with a digit', '%^&@";' => 'only punctuation characters', None of those keys could result from using the C<:> option constructor. Smylers