Re: [stack] Properties of Concatenative langauges and Forth
"pml060912" <[email protected]>
| Newsgroups | gmane.comp.lang.concatenative |
|---|---|
| Message-ID | <[email protected]> |
--- In [email protected], "William Tanksley, Jr" <wtanksleyjr@...> wrote: > > Christopher Diggins <cdiggins@...> wrote: > > Forth without compile-time words isn't Turing-complete as far as I can > > tell. I don't think you can just give it a pass. Can you even > > construct a conditional expression in Forth without compile-time > > words? > > Sure, but you have to have some way of deferring a word inside a > definition (i.e. getting a reference to a function rather than > executing it). The "Furphy" language takes an approach like Joy's, by > providing a quotation primitive and redesigning the control words to > expect quotations on the stack rather than using compiling words... No! I deliberately looked for an approach that did NOT need quotation for just this sort of reason, i.e. to keep the base small and extensible without making anything "special" so that higher level behaviour would also remain consistent etc. I eventually found one in the FREEZE and THAW matched pair of keywords (these can be implemented using return stack manipulation keywords like R> and >R and don't even need to be primitives). After that I provided quotation for code using [ and ] as syntactic sugar, but it is not fundamental (see http://users.beagle.com.au/peterl/furphy.html for more details). . . . > The ideal Joy-like language would have quotations, but keep them > distinct from lists. Furphy has a separate (and thus orthogonal) quotation system for data, using { and } to package up items that other stuff generate for them on the stack. There is also syntactic sugar to set up strings this way using quotation marks.