On Saturday, September 5, 2015 at 2:20:04 PM UTC-7,
hughag...@gmail.com wrote:
> On Saturday, September 5, 2015 at 9:38:37 AM UTC-7, Anton Ertl wrote:
> > Alfred Singlestone <
vit...@gmail.com> writes:
> > >I'm new to Forth. :) I'm enjoying myself and learning a lot.
> >
> > Good for you.
My first-ever ANS-Forth program was the LowDraw.4th program (in the novice package now). It was pretty simple and I didn't run into any problems. Nobody said, "good for you," but nobody denounced me either.
My second ANS-Forth program was the LC53 encryption-cracking program:
https://groups.google.com/forum/#!searchin/comp.lang.forth/lc53/comp.lang.forth/wP5nw1ClzsM/E-TV9v2y9RoJ
In this case, I got denounced for not knowing ANS-Forth, because my program didn't work on gForth (I had only tested it on SwiftForth). It turned out that in gForth tick will abort when given ; to look up. Anton Ertl says that this is not a bug in gForth, but that this compliant with the ANS-Forth standard, and I should have known. I have since rewritten my macro word to use late-binding rather than early-binding so I don't have to obtain xt values anymore, so now my program works under gForth too (everything in the novice package has been tested under SwiftForth, gForth, Win32Forth and now VFX). Anton Ertl has never taken back what he said about me not being an ANS-Forth programmer, and he continues to say that I'm not an ANS-Forth programmer. Elizabeth Rather has always insisted that I'm not a Forth programmer at all --- she conflates ANS-Forth with Forth in general.
> > > I don't know w=
> > >hat my future in the Forth community will be, but if anything is to drive m=
> > >e out, it'd be stuff like this. It reminds me a lot of the Smug Lisp Weenie=
> > > and the Insufferable Haskell P***k, of the attitude that "my opinion and v=
> > >iews are the only valid ones, and if you disagree with me, then you're an i=
> > >diot and destructive and you don't belong around here."
> >
> > Well, most Usenet groups have their kooks, and in Usenet everybody has
> > to do the rating of posters and postings themselves, and all proper
> > Usenet clients have killfiles or other mechanisms for that purpose. I
> > think that Google Groups does not, so in that case just skip the
> > content manually, or switch to a proper Usenet client.
> >
> > - anton
>
> Anton Ertl is the same guy who wrote gForth:
> 1.) In gForth, tick aborts on a significant number (51) of the words in the ANS-Forth standard.
> 2.) FIND returns an xt for these special-case words, but it is a different xt depending upon whether STATE is true or false at the time that FIND executes.
Anton Ertl is the worst possible choice to be the chairperson of the Forth-200x committee, because he either doesn't understand the concept of portability or he is actively opposed to it. His bizarre tick and FIND are not compatible with any other ANS-Forth system, and are in fact not compatible with any Forth of any kind that has ever existed.
Stephen Pelc (also on the ANS-Forth committee) has a completely different take on the above 51 words. In VFX it is possible to obtain an xt for them with tick or FIND, but the xt aborts when executed (it is a non-executing execution-token). Weirdly enough, these words are non-immediate in VFX, although they are immediate in SwiftForth and every other Forth that I know of going back 30 years.
Anyway, I have a way to disambiguify all of these words. With the following code, all of these words will provide an xt when given to tick or FIND, it will be immediate, and it will work properly when the xt is given to EXECUTE.
I figured out how to write disambiguifiers in this thread (although Anton Ertl had already hinted about how to write disambiguifiers in the thread mentioned above):
https://groups.google.com/forum/#!topic/comp.lang.forth/oXXQAGDKP7w%5B1-25%5D
And, (drum roll.....), here are the disambiguifiers:
: +loop state @ 0= abort" *** no interpretation semantics for: +LOOP ***" postpone +loop ; immediate
: ." state @ 0= abort" *** no interpretation semantics for: .quote ***" postpone ." ; immediate
: ; state @ 0= abort" *** no interpretation semantics for: ; ***" postpone ; ; immediate
: >r state @ 0= abort" *** no interpretation semantics for: >R ***" postpone >r ; immediate
: abort" state @ 0= abort" *** no interpretation semantics for: ABORTquote ***" postpone abort" ; immediate
: begin state @ 0= abort" *** no interpretation semantics for: BEGIN ***" postpone begin ; immediate
: do state @ 0= abort" *** no interpretation semantics for: DO ***" postpone do ; immediate
: does> state @ 0= abort" *** no interpretation semantics for: DOES> ***" postpone does> ; immediate
: else state @ 0= abort" *** no interpretation semantics for: ELSE ***" postpone else ; immediate
: exit state @ 0= abort" *** no interpretation semantics for: EXIT ***" postpone exit ; immediate
: I state @ 0= abort" *** no interpretation semantics for: I ***" postpone I ; immediate
: if state @ 0= abort" *** no interpretation semantics for: IF ***" postpone if ; immediate
: J state @ 0= abort" *** no interpretation semantics for: J ***" postpone J ; immediate
: leave state @ 0= abort" *** no interpretation semantics for: LEAVE ***" postpone leave ; immediate
: literal state @ 0= abort" *** no interpretation semantics for: LITERAL ***" postpone literal ; immediate
: loop state @ 0= abort" *** no interpretation semantics for: LOOP ***" postpone loop ; immediate
: postpone state @ 0= abort" *** no interpretation semantics for: POSTPONE ***" postpone postpone ; immediate
: r> state @ 0= abort" *** no interpretation semantics for: R> ***" postpone r> ; immediate
: r@ state @ 0= abort" *** no interpretation semantics for: R@ ***" postpone r@ ; immediate
: recurse state @ 0= abort" *** no interpretation semantics for: RECURSE ***" postpone recurse ; immediate
: repeat state @ 0= abort" *** no interpretation semantics for: REPEAT ***" postpone repeat ; immediate
: s" state @ 0= abort" *** no interpretation semantics for: Squote ***" postpone s" ; immediate
: then state @ 0= abort" *** no interpretation semantics for: THEN ***" postpone then ; immediate
: unloop state @ 0= abort" *** no interpretation semantics for: UNLOOP ***" postpone unloop ; immediate
: until state @ 0= abort" *** no interpretation semantics for: UNTIL ***" postpone until ; immediate
: while state @ 0= abort" *** no interpretation semantics for: WHILE ***" postpone while ; immediate
: [ state @ 0= abort" *** no interpretation semantics for: [ ***" postpone [ ; immediate
: ['] state @ 0= abort" *** no interpretation semantics for: ['] ***" postpone ['] ; immediate
: [char] state @ 0= abort" *** no interpretation semantics for: [CHAR] ***" postpone [char] ; immediate
: 2>r state @ 0= abort" *** no interpretation semantics for: 2>R ***" postpone 2>r ; immediate
: 2r> state @ 0= abort" *** no interpretation semantics for: 2R> ***" postpone 2r> ; immediate
: 2r@ state @ 0= abort" *** no interpretation semantics for: 2R@ ***" postpone 2r@ ; immediate
: ?do state @ 0= abort" *** no interpretation semantics for: ?DO ***" postpone ?do ; immediate
: again state @ 0= abort" *** no interpretation semantics for: AGAIN ***" postpone again ; immediate
: c" state @ 0= abort" *** no interpretation semantics for: Cquote ***" postpone c" ; immediate
: case state @ 0= abort" *** no interpretation semantics for: CASE ***" postpone case ; immediate
: compile, state @ 0= abort" *** no interpretation semantics for: COMPILE, ***" postpone compile, ; immediate
: endcase state @ 0= abort" *** no interpretation semantics for: ENDCASE ***" postpone endcase ; immediate
: endof state @ 0= abort" *** no interpretation semantics for: ENDOF ***" postpone endof ; immediate
: of state @ 0= abort" *** no interpretation semantics for: OF ***" postpone of ; immediate
: [compile] state @ 0= abort" *** no interpretation semantics for: [COMPILE] ***" postpone [compile] ; immediate
: 2literal state @ 0= abort" *** no interpretation semantics for: 2LITERAL ***" postpone 2literal ; immediate
: fliteral state @ 0= abort" *** no interpretation semantics for: FLITERAL ***" postpone fliteral ; immediate
: (local) state @ 0= abort" *** no interpretation semantics for: (LOCAL) ***" postpone (local) ; immediate
: locals| state @ 0= abort" *** no interpretation semantics for: LOCALS| ***" postpone locals| ; immediate
: ;code state @ 0= abort" *** no interpretation semantics for: ;CODE ***" postpone ;code ; immediate
: ahead state @ 0= abort" *** no interpretation semantics for: AHEAD ***" postpone ahead ; immediate
: cs-pick state @ 0= abort" *** no interpretation semantics for: CS-PICK ***" postpone cs-pick ; immediate
: cs-roll state @ 0= abort" *** no interpretation semantics for: CS-ROLL ***" postpone cs-roll ; immediate
: sliteral state @ 0= abort" *** no interpretation semantics for: SLITERAL ***" postpone sliteral ; immediate