In article <4b84665e38d5a523efc2479f48338ed55d142185@i2pn2.org>,   
   dxf wrote:   
   >On 28/03/2025 8:38 pm, albert@spenarnc.xs4all.nl wrote:   
   >> In article <19029ff0c8e7cf53335fe62639308e7f92d10240@i2pn2.org>,   
   >> dxf wrote:   
   >>> On 27/03/2025 11:02 pm, albert@spenarnc.xs4all.nl wrote:   
   >>>> In article <87semzmwok.fsf@nightsong.com>,   
   >>>> Paul Rubin wrote:   
   >>>>> albert@spenarnc.xs4all.nl writes:   
   >>>>>> In hindsight my locals definition is not convincing, because carnal   
   >>>>>> knowledge about the behaviour of the return stack is required.   
   >>>>>   
   >>>>> It's ok if it's for a specific implementation. But what I'm having   
   >>>>> trouble seeing is how the locals get popped in case of an exception.   
   >>>>   
   >>>>   
   >>>> I showed it as an example of the pretty convincing usefulness   
   >>>> of CO. For this the example had to have to be portable.   
   >>>>   
   >>>> A simpler example would be   
   >>>> \ Temporary set some-rounding-mode for the duration of this word.   
   >>>> : rounding set-rounding-mode CO truncate-mode set-rounding-mode ;   
   >>>> ...   
   >>>   
   >>> Actually it was that example which caused me to *not* go ahead   
   >>> and implement ;: in the kernel despite a cost of only one header.   
   >>> How many calls to 'rounding' will you encounter in an application?   
   >>   
   >> `rounding: is an internal word in the fp package and it is used 4   
   >> times.   
   >>   
   >>> My guess is one. The usual example is HEX: but I already had (H.N)   
   >>> that's more flexible. For me at least locals was more credible but   
   >>> again it fell into a range. For a single use I'd do it manually;   
   >>> for extensive use (where exceptions etc are likely) a proper locals   
   >>> may be the only option. OTOH such decision-making is exactly what   
   >>> Forth has always been about.   
   >>>   
   >>>   
   >>   
   >> You can't argue with   
   >> :NONAME ." Before " .S CO ." After " .S ;   
   >> ' proc_contains_Heisenbug decorated   
   >>   
   >> Study python for the concept of decoration.   
   >> This alone makes CO a worthwhile addition.   
   >>   
   >> I have (D.H) that uses CO. Undoubtedly your (H.N) is more complicated.   
   >   
   >Possibly though much of the complication lies in what it needs to do - as   
   >opposed to radix save/restore.   
   >   
   >\ Convert unsigned number u to a hexadecimal string c-addr2 u2 in the   
   >\ HOLD buffer beginning with the least-significant digits. Exactly   
   >\ +n hexadecimal characters are returned with any unused positions   
   >\ being filled with character '0'. BASE is preserved.   
   >: (H.N) ( u +n -- c-addr2 u2 )   
   > base @ >r hex <# 0 tuck ?do # loop #> r> base ! ;   
      
   Same idea.   
   ( Generate string with hex format of DOUBLE of LEN digits)   
    : 4? 1+ 4 MOD 0= IF &, HOLD THEN ;   
    : (DH.) HEX: <# 1- 0 ?DO # I 4? LOOP # #> ;   
      
   ( Derive B. H. DH. from them)   
      
   Only HEX: DEC: is made a separate facility:   
   : HEX: R> BASE @ >R >R HEX CO R> BASE ! ;   
   : DEC: R> BASE @ >R >R DECIMAL CO R> BASE ! ;   
   To live on and fight another day, e.g. in formatting, or in at-xy that   
   outputs a position in decimal.   
      
      
      
   Groetjes Albert   
   --   
   Temu exploits Christians: (Disclaimer, only 10 apostles)   
   Last Supper Acrylic Suncatcher - 15Cm Round Stained Glass- Style Wall   
   Art For Home, Office And Garden Decor - Perfect For Windows, Bars,   
   And Gifts For Friends Family And Colleagues.   
      
   --- SoupGate-DOS v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|