reserved word guaranteed to be atom if single-quoted?

Michael Turner <>
Sat Feb 20 09:50:52 CET 2010


Recently somebody tripped over "query" as a reserved word in Erlang,
and wondered what it was, and whether there were other reserved words
that were similarly obscure.

And I've been tinkering with a style of argument passing where one might
write

  the_frob ({of, This_thing}, {within, That_other_thing}, ....)

as a kind of poor man's syntactic sugar for the folks I'm writing my
code for (who aren't programmers, much less Erlang programmers, just
algorithm-specifiers).  Of course, the Erlang parser complains about my
"of".

Experiment shows that single-quoting seems to work, e.g., Erlang accepts

   {'of', 'query'}.

But it doesn't return quite what I'd expect from the shell.  I get back

   {'of', 'query'}

where I expected

   {of, query}

although I think this because some output pretty-printing metarule is
being applied here, like "output stuff in a way that's also acceptable
for input, to the extent reasonable."  Certainly

  atom_to_list('of')

reports what I *did* expect from the Erlang shell: "of", i.e., without
the single quotes.

I'd like to submit a patch to the relevant part of the Data Types
section of the User's Manual, which currently reads as follows:

----
An atom is a literal, a constant with name. An atom should be enclosed in
single quotes (') if it does not begin with a lower-case letter or if
it contains other characters than alphanumeric characters, underscore
(_), or @.
----

That seems incomplete to me.  I'd like to add, "or if it's an Erlang
reserved word", with a link to the list of reserved words.  It doesn't
make sense to me that this single-quoting of reserved words would ever
fail in some future version, but I thought I'd ask, just to be sure.

-michael turner


More information about the erlang-questions mailing list