Re: [stack] Cat article submission to Doctor Dobbs Journal
"Christopher Diggins" <[email protected]>
| Newsgroups | gmane.comp.lang.concatenative |
|---|---|
| Message-ID | <[email protected]> |
On Feb 10, 2008 12:25 PM, William Tanksley, Jr <[email protected]> wrote: > Christopher Diggins <[email protected]> wrote: > > > Now I find a real disagreement. First-class functions aren't at all > > > part of the definition of "concatenative" > > > My bad, I didn't mean to imply that. They are key to why Joy is so > > interesting (to me at least) though. > > Definitely. You're right that they belong in the intro. > > > > > nor are branch statements > > > antithetical to concatenativity. > > > I really didn't mean to imply that one neither. My point was that the > > fact that Manfred leaving branch statements (by which I mean goto > > statements) out was significant (is that contentious?). I wasnt trying > > to say anything there about concatenative languages in general. I've > > tried to clarify. > > What previous concatenative language had GOTO statements? Forth has BRANCH and BRANCH? Do you consider Forth a concatenative language? Either way I am talking explicitly about stack-based languages so Forth definitely has to be considered. > I don't > think Manfred "left them out"... They're a little hard to put in, so > they were rare at best in other concatenative languages. I assumed you > were talking about special syntax for conditionals, which Manfred > removed the need for when he supplied function literals. I consider conditionals (and other control flow constructs) as simply syntactic sugar for branch statements. However, I will try to make it less contentious, and my intention more clear. > > > A possible replacement: > > > > "Manfred's primary innovation with Joy was to introduce first class > > > functions and function literals (called quotations). The resulting > > > language shares many of the advantages of functional languages (e.g. > > > it is easy to reason about) and is particularly expressive." > > > I like that, but the goto removal is significant, and should be left > > because with gotos you wouldn't have the nice rewriting properties > > that you have now. > > Good point... But that's because of the removal of syntax (or the > regularization of syntax), not so much because of the removal of GOTOs > (which are merely a particular type of syntax, and one which most > concatenative languages don't have anyhow). You keep saying concatenative languages, and I am talking about stack-based languages. I am still not sure which languages are technically concatenative (is Forth? is JVML? is PostScript?). I am referring to things like MSIL, JVML, and Forth all of which have explicit gotos (i.e. branches / jumps / conditionals / etc.). Historically branching is part of stack languages, because they lacked higher-order functions. However PostScript breaks this rule, and I am concerned that I may be beging inaccurate when we consider it. It seems that PostScript does have a notion of function literals before Joy, so I have to be careful how I refer to the contributions of Joy. > > > Unfortunately, this removes all mention of "concatenative" from your > > > article, but since you didn't really discuss it I don't think it's a > > > loss. I do think you could be more precise than "is particularly > > > expressive", though... I'm not sure what you mean by it, although it > > > looks like a compliment :-). > > > By expressive I meant that we can say a lot with a little. (e.g. a few > > instructions can convey a sophisticated concept). I've tried to > > rephrase. > > Cool. > > > > I look forward to more of your comments, thanks! > > Having skimmed the rest, I like what you have from there on... I could > hunt for more nits to pick, but don't have the time and might not find > any anyhow. Thank you very much!! - Christopher