Note: read_canonical will *not* recognize a( ), i.e. with a whitespace
between the parens. Since this is read_canonical (and write_canonical
produces the accepted form,) I think this is OK. It's a more
complicated fix if we were to accept the form with the whitespace.