2024-01-09 15:48:38 there are two ways to switch between interpretation and compilation: a) the outer interpreter loop always checks a compilation flag and depending on that (and whether the word is immediate) either executes the word or compiles it, and [ and ] only manipulate this flag, versus b) the outer loop only executes words it encounters, and ] contains its own loop which checks either compiles or executes 2024-01-09 15:48:44 dependening on whether the word is immediate. 2024-01-09 15:50:37 aaahh nevermind, i think i just answered my own question again 2024-01-09 15:50:46 i was going to say i can't decide which i prefer 2024-01-09 15:50:52 Neither [ nor ] have any loops, usually - normally they just set the flag to 0 or 1 and return. The loop is somewhere else. In cmForth, though the compiler is spread off into a different word, which might be ], though. 2024-01-09 15:51:33 According to Elizabeth Rather, splitting the compiler loop off to a separate word makes cross compilation easier. 2024-01-09 15:52:16 But she said her house doesn't do it that way, because it's not standard compliant for some reason. 2024-01-09 15:52:53 Having a single loop "the interpreter' with a conditional clause in it for compilation is the "traditional" way of doing it. 2024-01-09 15:53:11 yeah, nevermind. not only have i answered my own question, but you have reminded me that i cannot expect deeper conversation here than "this is how god said to do it". thanks 2024-01-09 15:53:23 But shortly after he did cmForth, Chuck stated somewhere that it was his favorite out of all of his Forths up to that time. 2024-01-09 15:58:19 in case anyone is interested, my defense for (b) was going to be that you can wrap compiling words, like : meta-emulator: ( ccc ) meta-create :noname ( when this returns you can expect for the :noame defintion to be completed ) meta-latest @ >efa ! ; however, that comment isn't necessarily true since it would also return when it encountered a [