Deutsch   English   Français   Italiano  
<v5kde0$2sasd$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Krishna Myneni <krishna.myneni@ccreweb.org>
Newsgroups: comp.lang.forth
Subject: Re: 0 SET-ORDER why?
Date: Thu, 27 Jun 2024 14:09:52 -0500
Organization: A noiseless patient Spider
Lines: 77
Message-ID: <v5kde0$2sasd$1@dont-email.me>
References: <v5fjkr$1p13i$1@dont-email.me>
 <2024Jun26.094910@mips.complang.tuwien.ac.at> <667bd654$1@news.ausics.net>
 <v5h5h6$2565d$1@dont-email.me> <v5ioud$2ii4l$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Thu, 27 Jun 2024 21:09:53 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="3e1155ef3c14984d719ad25c26716b5d";
	logging-data="3025805"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX18gp+NMecqkL3hXvw4/zNNn"
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:k2Z5aleuPIZoGysMUiKxZW64x6g=
Content-Language: en-US
In-Reply-To: <v5ioud$2ii4l$1@dont-email.me>
Bytes: 3589

On 6/26/24 23:14, Gerry Jackson wrote:
> On 26/06/2024 14:36, Ruvim wrote:
>> One possible use case:
>>
>>    : turnkey ( -- ) 0 set-order
>>      also Target definitions
>>      also Minimal also
>>    ;
> 
> ALSO duplicates the wordlist at the head of the search order. If the 
> search order is empty there is nothing to duplicate. Therefore ALSO 
> applied to an empty search order ought to be an ambiguous condition.
> 
> Presumably the above definition works because a target wordlist replaces 
> whatever garbage ALSO leaves in the search order. So the definition 
> might as well have 0 1 SET-ORDER instead of 0 SET-ORDER ALSO.
> Or better still TARGET-WORDLIST 1 SET-ORDER. Either removes the above 
> justification for 0 SET-ORDER.
> 

Good analysis showing that

1) The definition of TURNKEY is flawed.

2) 0 SET-ORDER is not necessary.


> But having said that it is better for 0 SET-ORDER to do what is natural 
> instead of yet another ambiguous condition.
> 
>  > Another possible use case:
>  >
>  >    : s-to-n ( addr u -- n )
>  >      depth >r
>  >      get-order n>r 0 set-order
>  >        ['] evaluate ['] execute-interpreting catch
>  >      nr> set-order
>  >      depth 1- r> <> if -12 throw then
>  >    ;
> 
> This is a better use case e.g. if BASE is greater than decimal 10 
> converting an alphanumeric string to a number could clash with a word in 
> the dictionary. Having an empty search order eliminates that possibility.
>

This use case is convoluted and there may be a better of dealing with 
the anticipated problem. If not, we should consider what's missing in 
Forth allowing us to solve the problem more directly.


No one has pointed to a need for 0 SET-ORDER in interpretation state, 
and there is no to undo its use in interpretation state in a standard. 
Furthermore an empty search order contradicts the concept of a minimum 
search order.

The solutions are:

1) leave everything as is, and live with the contradiction and the 
hazard of performing 0 SET-ORDER in interpretation state.

2) make SET-ORDER state-smart, and live with the contradiction. This 
will potentially break code.

3) disallow zero as an argument to SET-ORDER e.g. throw an error for zero.

Am I missing any other options?

Personally, I favor 3) -- throwing an error when zero is an argument to 
SET-ORDER.

--
Krishna

Personally


2)