RfD: Legacy Words (v3)

13 views
Skip to first unread message

Peter Knaggs

unread,
Aug 31, 2010, 1:57:52 PM8/31/10
to
RfD: Legacy Words (v3)
=================

2010-08-31 Removed FORGET from the list of words removed, leaving
it marked as obsolete.
2009-09-09 Removed legacy word set in favour of section D.7
1998-11-30 Original text by Len Zettel.


Problem
=======
Section 1.4.2 "Obsolescent features" declared seven words as
obsolescent and warned "they may be withdrawn from future revisions
of the Standard". It is now 15 years since that warning was issued,
it is time to remove these words from the document.

In order to do this a number of alterations to the main document
are required.


Proposal
========

1. Replace the third paragraph of section 1.4.2 "Obsolescent
features", listing the obsolescent words:

6.2.0060 #TIB 15.6.2.1580 FORGET 6.2.2240 SPAN
6.2.0970 CONVERT 6.2.2040 QUERY 6.2.2290 TIB
6.2.1390 EXPECT

with:

15.6.2.1580 FORGET

2. Remove reference to EXPECT and CONVERT from the Documentation
requirements:

4.1.1 Implementation-defined options:

- character editing of ACCEPT and EXPECT;

- display after input terminates in ACCEPT and EXPECT;

4.1.2 Ambiguous conditions

- producing a result out of range, e.g., multiplication
(using *) results in a value too big to be represented by a
single-cell integer (*, */, */MOD, >NUMBER, FM/MOD, SM/REM,
UM/MOD, CONVERT, M*/);

4.2.1 Environmental dependencies

- depending on the presence or absence of non-graphic
characters in a received string (ACCEPT, EXPECT);

3. Replace throw code -15:

-15 invalid FORGET

with:

-15 reserved

4. CORE EXT Wordset

6.1.2216 SOURCE
Remove ", declaring TIB and #TIB obsolescent" from the end of the
first paragraph, and the following text from the rationale:

SOURCE in this form exists in F83, polyFORTH, LMI's Forths
and others. In conventional systems it is equivalent to the
phrase

BLK @ IF BLK @ BLOCK 1024 ELSE TIB #TIB @ THEN

6.1.2450 WORD
Remove the sentence "A space, not included in the length,
follows the string" from the second paragraph and the note
in the definition.

Remove the second paragraph from the rationale:

As a concession to the obsolesecent word CONVERT, Forth94
required an implementation to put a space after the string
placed by WORD. This standard neither requires nor
prohibits such a space.

6.2.0060 #TIB
Remove the definition and rationale.

6.2.0695 ACCEPT
Remove reference to EXPECT from the first paragraph, and the
following paragraphs from the rationale:

ACCEPT and EXPECT perform similar functions. ACCEPT is
recommended for new programs, and future use of EXPECT
is discouraged.

As in previous standards, EXPECT returns the input string
immediately after the requested number of characters are
entered, as well as when a line terminator is received.
The "automatic termination after specified count of
characters have been entered" behavior is widely considered
undesirable because the user "loses control" of the input
editing process at a potentially unknown time (the user does
not necessarily know how many characters were requested from
EXPECT). Thus EXPECT and SPAN have been made obsolescent and
exist in the Standard only as a concession to existing
implementations. If EXPECT exists in a Standard System it
must have the "automatic termination" behavior.

ACCEPT does not have the "automatic termination" behavior of
EXPECT. However, because external system hardware and
software may perform the ACCEPT function, when a line
terminator is received the action of the cursor, and therefore
the display, is implementation-defined. It is recommended
that the cursor remain immediately following the entered text
after a line terminator is received.

6.2.0970 CONVERT
Remove the definition and rationale.

6.2.1390 EXPECT
Remove the definition and rationale.

6.2.2040 QUERY
Remove the definition and rationale.

6.2.2125 REFILL
Remove the reference to QUERY in the rationale leaving:

REFILL is designed to behave reasonably for all possible
input sources. If the input source is coming from the user
REFILL could still return a false value if, for instance, a
communication channel closes so that the system knows that
no more input will be available.

6.2.2240 SPAN
Remove the definition, there is no rationale.

6.2.2290 TIB
Remove the definition and rationale.

5. Remove the reference to #TIB and TIB from the first sentence of
the "Data space" rationale (A.3.3.3).

6. Remove the reference to CONVERT in the rationale for the
Core extension words (A.6.2):

- Words that are being deprecated in favour of new words
introduced to solve specific problems (e.g., CONVERT).

7. Add the following to Annex D:

D.7 ANS Forth '94
=============

D.7.1 Removed Definitions
-------------------

This standard removes six words that were marked 'obsolescent'
in the ANS Forth '94 document. These are:

6.2.0060 #TIB 6.2.1390 EXPECT 6.2.2240 SPAN
6.2.0970 CONVERT 6.2.2040 QUERY 6.2.2290 TIB

Reuse of these names is strongly discouraged.


Remarks
=======

Annex D needs work to bring it up to date, let along explain the
difference between Forth200x and ANS Forth '94. This should be
the topic of another RfD. The text given in point 9 is intended
as a place holder until annex D is discussed in full.

This proposal leaves FORGET as an obsolescent word. Another proposal
may be raised to re-instate the word, removing it from the obsolescent
list.


Author
======
Peter Knaggs, P.J.K...@exeter.ac.uk
Engineering, Mathematics and Physical Science,
University of Exeter, Exeter, Devon EX4 7QF, England

Peter Knaggs

unread,
Sep 1, 2010, 4:09:23 AM9/1/10
to
Peter Knaggs wrote:
>
> 3. Replace throw code -15:
>
> -15 invalid FORGET
>
> with:
>
> -15 reserved

OOps, this should have been removed. Throw code -15 should remain
as an "invalid FORGET".

> Remarks
> =======
>
[...]


>
> This proposal leaves FORGET as an obsolescent word. Another proposal
> may be raised to re-instate the word, removing it from the obsolescent
> list.

Michael Gassanenko has already raised the "un-obsolete FORGET" proposal,
although it currently stands it would leave the document in an
contradictory state. It would need to revise section 1.4.2 "Obsolescent
features" in addition to 15.6.2.1580 FORGET and A.15.6.2.1580 FORGET.

--
Peter Knaggs

Anton Ertl

unread,
Sep 1, 2010, 8:17:16 AM9/1/10
to
"Peter Knaggs" <p...@bcs.org.uk> writes:
>1. Replace the third paragraph of section 1.4.2 "Obsolescent
> features", listing the obsolescent words:
>
> 6.2.0060 #TIB 15.6.2.1580 FORGET 6.2.2240 SPAN
> 6.2.0970 CONVERT 6.2.2040 QUERY 6.2.2290 TIB
> 6.2.1390 EXPECT
>
> with:
>
> 15.6.2.1580 FORGET

So you want to keep FORGET obsolescent. I think that it is going to
stay with us, so we might as well remove it from the list of
obsolesecent words. It does not hurt much to keep it obsolescent,
though.

- anton
--
M. Anton Ertl http://www.complang.tuwien.ac.at/anton/home.html
comp.lang.forth FAQs: http://www.complang.tuwien.ac.at/forth/faq/toc.html
New standard: http://www.forth200x.org/forth200x.html
EuroForth 2010: http://www.euroforth.org/ef10/

Peter Knaggs

unread,
Sep 1, 2010, 10:25:03 AM9/1/10
to
Anton Ertl wrote:
>
> So you want to keep FORGET obsolescent. I think that it is going to
> stay with us, so we might as well remove it from the list of
> obsolesecent words. It does not hurt much to keep it obsolescent,
> though.

I could role Gassanenko's "un-obsolete FORGET" proposal into this one,
or we could leave them as two separate proposals. Which would we
prefer?

--
Peter Knaggs

Anton Ertl

unread,
Sep 1, 2010, 11:02:35 AM9/1/10
to

I don't think it is contentious, nor is it a change that requires a
CfV*, so you can roll it into one for simplicity.

*) If someone really wants to make the effort, they can make a poll on
how many systems implement and how many programmers use FORGET, but I
think that that won't make a difference; it has become pretty clear
that there are a significant number of people who still use FORGET, so
that systems that have it won't remove it.

Reply all
Reply to author
Forward
0 new messages