>>>>>>>Arnold Doray <
thinks...@gmail.com> wrote:
>>>>>>>> I'm beginning to appreciate Gforth's LATESTXT word. Is there a portable
>>>>>>>> implementation?
>>>>>>>
>>>>>>>No. Practice varies so much between Forths that it hasn't been
>>>>>>>possible to standardize it.
>>>>>>
>>>>>> This feature should be easy to insert into any standard Forth:
>>>>>>
>>>>>> Add a possibly (USERized) VALUE LATESTXT, and in every place where an
>>>>>> xt is defined, add an "is latestxt".
>>>>>
>>>>>Not necessarily. For example, you don't know when the latest XT is
>>>>>defined while compiling a colon definition; it might not be until
>>>>>after ; .
>>>>
>>>> Is this based on a real, standard system (i.e., practice), or do you
>>>> just make this up to support your claim?
>>>
>>>I don't think it needs any support: AFAIK it's allowed by the language
>>>of the standard, even though I don't know of any existing standard
>>>systems that do so.
>>
>> So it's not that practice varies; you just claimed that it does,
>> without any support.
>
>I did not claim any such thing.
I did not keep the quoted text because I am too lazy to remove it, but
because it proves that you did. Here it is again:
>>>>>>>No. Practice varies so much between Forths that it hasn't been
>>>>>>>possible to standardize it.
>I don't think that this reductio ad absurdum argument illuminates very
>much. IMO, any new restrictions on Forth implementations should be
>considered very carefully. If it produces something highly desirable,
>a new restriction may be justified.
Sure. On the other hand, in this case you unpack the
"restrict-the-implementation" sledgehammer without giving any
evidence, so you reduced the argument to absurdity yourself.
>However, several recent threads
>on c.l.f. seem to me to have been of the form "How can I do X? You
>can't. But let's standardize Y, and then you could." Let's not add
>any more redundant language features.
If you cannot do X without Y, Y is not redundant.
As for redundant features, I could mention a few that were discussed
relatively recently, but let's not get distracted.
>> I think useful arguments are based on practice.
>
>That's wholly backward-looking, though. I think that arguments should
>also be based on what is possible in the future.
We tend not to accept such arguments when it comes to adding features,
we should also be very wary of such arguments when it comes to
rejecting features.
Sure, if you can give good, hard, support that a feature will be a
hindrance to future development, some system implementors may see an
opportunity to improve their systems in the future and will resist the
feature.
But just writing that it might restrict systems, and that you can
think up a system in ten minutes that would be made non-standard by
the feature is not any more helpful than the absurd argument in my
reductio-ad-absurdum. For any feature, including those already
standardized, I can think up a system in 10 minutes that does not have
the feature and is otherwise standard.
>For example, ANS
>Forth to some extent anticipated Forth optimizers, which existed only
>in a very crude form at the time.
Tom Almy's cforth (later renamed ForthCMP) was available in 1982 and
its code generation is not that far from what VFX is doing now
(including register shuffle at basic block boundaries). It had a
number of restrictions, though (batch compilation etc.). Fortunately
the Forth-94 TC did not get rid of the "interactivity" restriction in
order to make it easier to write compilers with that kind of code
quality.
>> If you can name a system where LATESTXT would be hard or impossible
>> to implement, that would be a good counterargument. If I can name a
>> number of programs where LATESTXT was used to significant advantage,
>> that would be a good pro-argument.
>
>That's true. As I said above, if it produces something highly
>desirable, a new restriction [on implementers] may be justified. But
>I am suggesting that the bar should be set at "highly desirable".
The question of whether we find a feature desirable enough to include
it is a different one. I just don't want any chaff from
"restricts the system" arguments without any evidence.
And, BTW, if we restrict the systems in ways that they become
non-standard if they miscompiled code like GCC does, I would be all
for it. Unfortunately such restrictions are probably not easy to
specify.