Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!zen.net.uk!dedekind.zen.co.uk!aioe.org!.POSTED!not-for-mail From: "Rod Pemberton" Newsgroups: comp.lang.forth Subject: Re: does VFX have the same bug as Gforth? Date: Sat, 23 Aug 2014 04:44:45 -0400 Organization: Aioe.org NNTP Server Lines: 57 Message-ID: References: <7f2a965b-6053-44c4-ac8c-5c977f197de8@googlegroups.com> <2014Aug19.111459@mips.complang.tuwien.ac.at> <2014Aug19.173925@mips.complang.tuwien.ac.at> <2014Aug20.094606@mips.complang.tuwien.ac.at> <2014Aug22.171358@mips.complang.tuwien.ac.at> <61d7cdbb-1b5b-4564-9c89-85e510e140ed@googlegroups.com> NNTP-Posting-Host: CNsg4fVcCsvs3UaOgZtQCw.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Opera Mail/12.16 (Linux) X-Notice: Filtered by postfilter v. 0.8.2 Xref: csiph.com comp.lang.forth:33016 On Fri, 22 Aug 2014 21:28:39 -0400, wrote: > On Friday, August 22, 2014 9:47:39 AM UTC-7, Bernd Paysan wrote: >> Anton Ertl wrote: >> Yes, taking away immediacy of words you expect to be immediate is >> bound to cause problems with words like [COMPILE], which assume >> that the user knows whether the word is immediate or not (which >> is a bad idea). >> >> That's why POSTPONE was invented. I don't quite understand why >> [COMPILE] was left in the standard, it's impossible to use >> correctly given that the standard doesn't tell which words are >> immediate and which aren't (with a few exceptions). Bernd, you're thinking as a user of Forth, not as the creator of the Forth dictionary who can see and knows which words are and aren't immediate. > SwiftForth doesn't support [COMPILE] so it is not fully > ANS-Forth compliant. > Hugh, these are John Hayes' ANS compliant COMPILE, and [COMPILE] definitions (c.l.f. 1990): : COMPILE, POSTPONE LITERAL POSTPONE EXECUTE ; : [COMPILE] ' COMPILE, ; IMMEDIATE > This doesn't bother me. I don't know why [COMPILE] is in the > standard either. I have never used it in ANS-Forth. I don't > know why it would be used instead of POSTPONE. I assumed that > you would know. If you don't know, and Elizabeth Rather doesn't > know, then who would know? Could it be for ['] ? ['] seems to typically be coded in terms or COMPILE or [COMPILE] such as in these (not by me): : ['] ' COMPILE LIT , ; IMMEDIATE : ['] ' [COMPILE] LITERAL ; IMMEDIATE Where LITERAL is typically: : LITERAL COMPILE LIT , ; IMMEDIATE POSTPONE seems to be most commonly coded using COMPILE COMPILE as part of the sequence. So, if you have COMPILE then you have POSTPONE then COMPILE, and [COMPILE] from John Hayes' definitions and so too [']. ISTM, you need ' COMPILE EXECUTE LITERAL to construct them. In 1990 on c.l.f, John Hayes said POSTPONE was the key word, while Mitch Bradley said only COMPILE, was needed. Rod Pemberton