Subject: Re: Name for the set of characters legal in identifiers
From: Erik Naggum <erik@naggum.no>
Date: 15 Jan 2004 04:00:22 +0000
Newsgroups: comp.lang.lisp
Message-ID: <3283128022497673KL2065E@naggum.no>

* Erik Naggum
> But (read-from-string "a b") will return a symbol, namely A, when
> the constituent trait of the space is /invalid/.

* james anderson
| i had thought that circumstance was specified to signal an error.

  Hm.  This appears to be unexplored territory.  You deserve credit
  for pointing to the map and the real world and urging me to take a
  closer look at both.

  We have the following situation: A character whose syntax type is
  /constituent/ is used to set the syntax type of a character whose
  previous syntax type was /whitespace/, but this means that the
  constituent trait of that character remains /invalid/, which makes
  the syntax type /invalid/.  According to the specification, such a
  character can never occur in the input except under the control of a
  single escape character, so (read-from-string "a b") should indeed
  signal an error, as per 2.1.4.3.  (In case anyone else wonders, the
  multiple escape mechanism already forces all characters to have the
  alphabetic trait.)

  I thought I caught an obvious oversight in your test, but it would
  have been strong enough to test the hypothesis, were it not for the
  sorry fact that none of the Common Lisp environments I have access
  to signal an error when encountering invalid characters in the input
  stream.

| it was always 3. 

  OK, then this is definitely surprising and in clear violation of the
  standard.  You're right that SET-SYNTAX-FROM-CHAR should not clobber
  the constituent trait for any character, not just the package marker.

  Where is that annoying conformance test guy who stresses the useless
  corners and boundary conditions of the standard when you need him?

-- 
Erik Naggum | Oslo, Norway

Act from reason, and failure makes you rethink and study harder.
Act from faith, and failure makes you blame someone and push harder.