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,219 of 117,927   
   Anton Ertl to Hans Bezemer   
   Why dial-a-standard is not a thing in Fo   
   18 Apr 25 06:28:17   
   
   [continued from previous message]   
      
      additional word, and the people who argue 1) would also dislike the   
      proposal.   
      
   The bottom line is that the proposal would probably not find a   
   consensus and would not be accepted by the committee.  The bottom line   
   is:   
      
   >> One could dream up ways to deal with that problem, but given past   
   >> experience, I doubt such ideas would find enough support   
      
   And the bottom line of that is that proposals for incompatible changes   
   have little chance of being accepted.   
      
   >There could be special words like [FORTH78], [ANSFORTH] - which would no   
   >nothing but:   
   >- Either hiding words in the dictionary that should be disabled;   
   >- Activating words that are part of this standard;   
      
   Interestingly, Forth-79 includes a word 79-STANDARD, and Forth-83   
   includes a word FORTH-83, but Forth-94 and Forth-2012 do not include   
   such words.  We had a discussion whether we should have Forth-94 and   
   Forth-2012 versions of environmental queries for wordsets in   
   Forth-2012, but the committee decided against that.   
      
   In any case, if you want to support including libraries written for a   
   different standard, the effect of such words should be limited to a   
   specific file.  If the standards are incompatible and you want   
   libraries, and you do not provide this kind of dialing, you can take a   
   look at the Python 3 transition pain (or worse, what happened with   
   Perl6) to see what happens.  The Python community has learned from   
   that experience not to introduce such incompatible changes again.   
      
   >- Assigning the proper "version" words to trampolines or DEFERs.   
      
   That's exactly the wrong thing to do.  You want to statically bind the   
   name to the word with the right version.  E.g. if you have a Forth-83 program   
      
     forth-83   
     100 load ( includes a library written in Forth-79)   
      
     : foo ( ... -- ... )   
       ... not ... ;   
      
   and the library contains   
      
     79-standard   
     : bar ( ... -- ... )   
       ... not ... ;   
      
   you want the use of NOT in FOO to be statically bound to (what   
   Forth-94 calls) INVERT and the NOT in BAR to be statically bound to   
   0=; you usually don't want BAR or FOO to change its behaviour   
   depending on which standard is selected.   
      
   >But I think maybe, just maybe the same effect could be achieved by using   
   >wordsets.   
      
   I assume you mean wordlists.  Yes, the effect of switching between the   
   Forth-83 NOT and the Forth-79 NOT can be achieved by having a wordlist   
   containing the Forth-79 words and a wordlist containing the Forth-83   
   words, and putting it in the search order.   
      
   >So, if we compile an external library using a mix of Forth-79, ANS Forth   
   >and Forth 2012, it could be as simple as:   
   >   
   >INCLUDE a.fs   
   >INCLUDE b.fs   
   >[FORTH2012]   
   >   
   >a.fs:   
   >[FORTH79]   
   >...   
   >   
   >b.fs:   
   >[ANSFORTH]   
   >...   
      
   There is 79-STANDARD, but there is no word equivalent to [FORTH2012]   
   or [ANSFORTH].  So a program that contains "[FORTH2012]" without first   
   defining it is not Forth-2012-compliant.  And a program that contains   
   [ANSFORTH] without first defining it is not Forth-94 compliant.   
      
   >That's much like setting the radix.   
      
   BASE is one of the misfeatures of Forth, and demonstrates the   
   disadvantage of having a state for the rest of the text   
   interpretation, and the Chuck Moore approach to .  Do you start every   
   file with DECIMAL or HEX?  Looking at SwiftForth (where one might   
   expect the most Chuck Moore influence), I see 26 occurences of DECIMAL   
   and 16 occurences of HEX, and usually not before the first occurence   
   of an integer with several digits.  As an example, the file that   
   contains the definition   
      
   : DECIMAL ( -- )   10 BASE ! ;   
      
   does not contain an invocation of DECIMAL before this use of "10".   
      
   >So - why couldn't this work?   
      
   As mentioned, there is no [FORTH2012] and no [ANSFORTH].   
      
   Moreover, this general approach does not work for BASE: If the next   
   standard required that systems start out in, say, octal, I am sure   
   that a lot of the existing source files would fail unless you invoked   
   DECIMAL before the INCLUDE.  BASE only works (and only so-so) because   
   every sane system defaults to DECIMAL, and that does not change   
   between standard versions.   
      
   - anton   
   --   
   M. Anton Ertl  http://www.complang.tuwien.ac.at/anton/home.html   
   comp.lang.forth FAQs: http://www.complang.tuwien.ac.at/forth/faq/toc.html   
        New standard: https://forth-standard.org/   
   EuroForth 2023 proceedings: http://www.euroforth.org/ef23/papers/   
   EuroForth 2024 proceedings: http://www.euroforth.org/ef24/papers/   
      
   --- 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