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

Reply via email to