Naming conventions (was: Number parsing with checks)

Liste des GroupesRevenir à cl forth 
Sujet : Naming conventions (was: Number parsing with checks)
De : ruvim.pinka (at) *nospam* gmail.com (Ruvim)
Groupes : comp.lang.forth
Date : 13. Oct 2024, 05:10:32
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vefh7p$hbo1$1@dont-email.me>
References : 1 2 3 4 5
User-Agent : Mozilla Thunderbird
On 2024-10-13 06:59, dxf wrote:
On 13/10/2024 1:20 pm, Ruvim wrote:
On 2024-10-13 05:13, dxf wrote:
On 13/10/2024 12:54 am, Ruvim wrote:
On 2024-10-12 05:45, dxf wrote:
The basics:
>
: .BAD ( -- )  cr ." Invalid item"  .abort ;
>
: ZE? ( x -- )  if .bad then ;     \ abort if non-zero
: NZ? ( x -- )  0= ze? ;           \ abort if zero
>
Typically, if word name ends with a question mark, the first (top) output parameter of the word is a *flag*. And it's true for all standard words. (though, opposite is not true)
>
It's rather similar.
>
ZE? NZ?  destructively tests TOS
>
But these words do not return a flag in the first output parameter. So, their names violate the common convention.
 Conventions are a guide.  Thankfully they're not yet a law.
 
Sure. But the mentioned conventions seem good.
If you are proposing generally useful words, and their names violate a common convention, you could probably explain why it is not worth following that convention in this case (or in general).
Or perhaps you could add a note that these names violate a certain convention simply because better names have not been found yet.
In general, there are two groups of words that do something or do nothing depending on some conditions:
   - group1: the words that only test some parameters (on the stack and/or in memory);
   - group2: the words that consume some parameters from the stack.
The first group is larger than the second.
In your case, you want to have a word from the first group and the corresponding word from the second group. So, a new naming rule is needed to distinguish these words.
The actual difference between these groups for your words is one "DUP" or "DROP". E.g.:
   : ?NZ(group1)  DUP ?NZ(group2) ;
   : ?NZ(group2)  ?NZ(group1) DROP ;
If I had to choose only one word from these two, I would prefer the word from the first group.
So, if the corresponding word from the second group is rarely needed, it might not be worth introducing. Simply use "?NZ DROP" instead of an individual word. Profit: no need to find a new naming rule.
Possible words/names for internal use:
   (?NZ)  ( x\0 --        |  0 -- never )
   (?ZE)  ( x\0 -- never  |  0 --       )
--
Ruvim

Date Sujet#  Auteur
12 Oct 24 * Number parsing with checks17dxf
12 Oct 24 `* Re: Number parsing with checks16Ruvim
12 Oct 24  +* Re: Number parsing with checks4Ruvim
12 Oct 24  i`* Re: Number parsing with checks3mhx
12 Oct 24  i +- Re: Number parsing with checks1Ruvim
14 Oct 24  i `- Re: Number parsing with checks1Stephen Pelc
13 Oct 24  `* Re: Number parsing with checks11dxf
13 Oct 24   `* Re: Number parsing with checks10Ruvim
13 Oct 24    +* Re: Number parsing with checks8dxf
13 Oct 24    i`* Naming conventions (was: Number parsing with checks)7Ruvim
13 Oct 24    i `* Re: Naming conventions6dxf
13 Oct 24    i  +* Re: Naming conventions3Ruvim
13 Oct 24    i  i+- Re: Naming conventions1mhx
14 Oct 24    i  i`- Re: Naming conventions1dxf
14 Oct 24    i  `* Re: Naming conventions2Ruvim
14 Oct 24    i   `- Re: Naming conventions1dxf
14 Oct 24    `- Re: Number parsing with checks1dxf

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal