[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Proposal #11: Contents of Tagbody



    Date: Mon, 21 Jul 1986  21:46 EDT
    From: "Scott E. Fahlman" <Fahlman@C.CS.CMU.EDU>

    Proposal #11: Contents of Tagbody

    Specify that constant forms such as strings may appear at top-level in a
    tagbody, but that only symbols and integers are considered to be tags.
    It is an error to use anything else as the destination tag for a GO.

    [Several forms of this have been kicked around.  This seems as good as
    any.  The original issue was whether you could put something like a
    string at top-level and, if so, whether you could go to it.]

I prefer Steele's original proposal, which was:

  Specify explicitly that anything in a TAGBODY other than
  a symbol, integer, or list is an error.

The manual already implies this, so the change would not be incompatible.
I can see nothing but user confusion resulting from allowing strings or
any other object that is not self-evidently either a form or a tag.
I'm more than willing to take (tagbody #1="bar" (print 1) (go #1#))
out of the Symbolics interpreter (the compiler already complains).

I think we should continue to allow integers as tags, for two reasons.
(1) Removing them would be an unnecessary incompatibility.
(2) Some people may be used to using integers as tags in other languages
(Basic, Pascal, Fortran) and these are the people most likely to be using
GO directly (rather than as part of the expansion of a macro).