Re: [stack] the concatenative wikipedia article
"William Tanksley, Jr" <[email protected]>
| Newsgroups | gmane.comp.lang.concatenative |
|---|---|
| Message-ID | <[email protected]> |
pml060912 <[email protected]> wrote: > "William Tanksley, Jr" <wtanksleyjr@...> wrote: >> non-associative syntax at all (AKA "flat"). Quotation is a strange >> thing to throw into an allegedly concatenative combinator base, >> though; unlike application, it's not an inherent part of the language >> paradigm; thus, I think my confusion is justified. > Well, where does Furphy fit in this breakdown? > (http://users.beagle.com.au/peterl/furphy.html) > Although it does have quotation, as I mentioned elsewhere that's just > syntactic sugar. The fundamental constructs are Reverse Polish naming > and concatenation, which can use the complementary keywords FREEZE and > THAW to defer and invoke evaluation/execution - and those can be built > from the return stack manipulation keywords R> and >R already found in > Forth. That looks fairly associative/flat to me. Furphy is a fascinating language; I had no idea it had such an interesting loop system. I'd say that Furphy probably is flat/completely associative; but note that I'm not sure what to do with the "Reverse Polish naming" system. Furphy's loop system isn't strictly needed in order to be completely associative; a ColorForth-like scheme would also work, where a label (word name) is identified by a special character, tail recursion is automatic, and the compiler recognizes the return operator. For those who don't know ColorForth: Colorforth uses "labels" instead of having distinct words; unlike Forth, where a word name begins a new definition (which implies that the old definition is finished), a ColorForth definition merely implies a new entry point. Correspondingly, the ";" word in ColorForth compiles a return (which will normally be optimized to a tail call) rather than strictly ending the current definition. ColorForth itself is not flat, because it keeps the concept of immediate words; however, it would be easy to do the same thing a Furphy and remove the need for all the immediates. Unfortunately, Furphy is a foreign language to me, so I can't understand the discussion of FREEZE and THAW. I think the use of "Reverse Polish Naming" is blocking my understanding -- I can't tell when a word I don't recognize is intended to be a definition versus when it's simply unfamiliar to me. With all due respect, I'm pretty sure that Reverse Polish Naming isn't a good idea; it's way too easy to mess a file's semantics up by pre-defining one of the words it intends to define. I'd far rather make definitions explicit. -Wm