home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.lang.forth      Forth programmers eat a lot of Bratwurst      117,927 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 117,156 of 117,927   
   dxf to albert@spenarnc.xs4all.nl   
   Re: Locals revisited   
   31 Mar 25 01:22:02   
   
   From: dxforth@gmail.com   
      
   On 30/03/2025 11:01 pm, albert@spenarnc.xs4all.nl wrote:   
   > 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.   
      
   The question then is can HEX: DEC: be justified.  While you might because   
   CO exists, I'm not sure I could.   
      
   --- SoupGate-DOS v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca