| Deutsch English Français Italiano |
|
<vcr3ff$25spg$9@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!feeds.phibee-telecom.net!2.eu.feeder.erje.net!feeder.erje.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Ruvim <ruvim.pinka@gmail.com>
Newsgroups: comp.lang.forth
Subject: Standard compliance for systems (was: single-xt approach in the
standard)
Date: Mon, 23 Sep 2024 10:56:46 +0400
Organization: A noiseless patient Spider
Lines: 87
Message-ID: <vcr3ff$25spg$9@dont-email.me>
References: <vcbn5e$3etuk$1@dont-email.me>
<1a3ebf77c1ed8926d455a268e1309fe0@www.novabbs.com>
<vcbuog$3etuk$3@dont-email.me> <66ee34a2$1@news.ausics.net>
<vcmbf2$1ifml$1@dont-email.me> <66ef7dc7$1@news.ausics.net>
<vcpi98$25spg$1@dont-email.me> <66f0fc6c$1@news.ausics.net>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Mon, 23 Sep 2024 08:56:48 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="33b085eef38ab766afb617aef8ec1273";
logging-data="2290480"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX190hnavaBECGfqx2SqVQPZP"
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:xEhaUcHvYw4wDLmOVGY6lfcWaK8=
In-Reply-To: <66f0fc6c$1@news.ausics.net>
Content-Language: en-US
Bytes: 4375
On 2024-09-23 09:28, dxf wrote:
> On 23/09/2024 2:57 am, Ruvim wrote:
....
>> NB: Keeping floating-point numbers on the data stack does not make a Forth system non-standard, but it merely adds an environmental restriction to this system, see the section "12.4.1.4 Environmental restrictions" in Forth-2012.
>
> I hadn't seen that. Forth-94 stated floating-point stack was "the default".
> If the only change is that the latter is clarified, then no harm done.
> Implementing separate stack on an 8-bit cpu would be expensive and a
> performance killer.
> As to being "far simpler" to program, similar appeals
> are made in respect of locals.
> I make it a point to program as if I had a
> unified stack just to see if the claim is true.
A real problem was to create programs that work with floating point
numbers and would work correctly both on a unified fp stack and on a
separate fp stack.
See the section "C.7.2 Separate Floating-point Stack is now Standard" in
Forth-2012 <https://forth-standard.org/standard/diff#subsection.C.7.2>
>
>> 2) Quote-delimited character interpretation ('A') makes programs simpler, this seems obvious.
>
> Only thing obvious is it's an import from other languages and redundant.
> Forth Inc stated they didn't agree with it but eventually provided it.
>
Using `'x'` is simpler and shorter than `[char] x` or `char x` depending
on the context.
And even if you redefine `[char]` to provide the expected interpretation
semantics, like:
: [char] state @ if postpone [char] else char then ; immediate
`[char] x` is still longer than `'x'` and provides no additional benefit
to programs.
>> 3) Two buffers for interpretive `s"` makes debugging simpler, because you can test words like `rename-file` interactively, see "A.17.3.4 Other transient regions" in Forth-2012.
>
> I have >PAD ( adr u -- adr2 u ) for that. Uses existing resources and is
> more flexible.
>
The phrase:
s" foo" s" bar" rename-file .
is simpler than:
s" foo" >pad s" bar" rename-file .
What advantages does the latter provide to users over the former?
If a Forth system is so limited in memory that it cannot provide two
buffers for `s"`, it *might* provide only one buffer and declare the
corresponding environmental restriction according to the sections:
- 5.1.1 System compliance
| An otherwise Standard System (Subset) that fails to comply
| with one or more of the minimum values or ranges specified
| in "3 Usage requirements" and its sub-sections has
| environmental restrictions.
- 5.1.2 System labeling
| The phrase "with Environmental Restrictions" shall be
| appended to the label of a Standard System (Subset) that
| has environmental restrictions.
- 11.3 Additional usage requirements, 11.3.4 Other transient regions
| The system provides transient buffers for `S"` and `S\"`
| regions strings. These buffers shall be no less than 80
| characters in length, and there shall be at least two buffers.
--
Ruvim