Re: [stack] language hierarchy
"William Tanksley, Jr" <[email protected]>
| Newsgroups | gmane.comp.lang.concatenative |
|---|---|
| Message-ID | <[email protected]> |
Christopher Diggins <[email protected]> wrote: > > > So concatenation of terms in Haskell denotes application, but it isn't > > > considered a concatenative language according to your definition. Try > > > explaining that to a random group of programmer or computer scientists > > > and see what their reaction is. > > But it doesn't, I think. Concatenation of terms in Haskell perhaps > > offers those terms for partial application; but the application only > > happens if the first term denotes a function with a free variable. > That statement is simply false. > See: http://www.haskell.org/onlinereport/exps.html > "Function application is written e1 e2." I can't read that page, unfortunately (a lack of experience with the grammar); but from the look of it, the grammar is a LOT more complex than you're implying. It's true that function application is written e1 e2; but that doesn't mean that everything written as e1 e2 is a function application. Does it? And in fact, right above the informal discussion of e1 e2, there's a grammatical and precise note about "[fval] aval", which seems to imply a distinction between functions and things which can be applied to functions. > > I don't think the path you're trying to walk will be fruitful. The > > problem is that any language written in plain text MUST do something > > when terms are concatenated (because that's the only thing you can DO > > with plain text); > False. The following is not simply invalid C: > "12 13" > Notice the concatenation of terms! I don't get it. That looks to me like invalid C. Why do you say it's not invalid? Anyhow, my point was that there must be SOME use of concatenation for every text based language; but calling a language "concatenative" has to mean that concatenation _always_ means something. > > trying to call a language "concatenative" merely > > because it "does something" *in some cases* when terms are > > concatenated is so vague it describes ALL languages. > That is not true. See: C, Java, C++, Pascal, Algol, etc. etc. etc. Those are further examples of my point: languages in which concatenation does something some times. The simple *presence* of concatenation in the grammar isn't enough, any more than the simple presence of functions is enough to make a language "functional". > > A language that deserves the name "concatenative" should respond to > > concatenation in the same way every time. > Whatever response you require in your definition, be it application, > composition, or some other operation, will be arbitrary: hence > confusing. But my point is that I don't require anything in my definition. There's nothing arbitrary there. You can propose any operation you want; but so far, the only one that's proven to work consistently and "interestingly" is function composition. Now, I admit that my definition lacks boundaries; nobody knows for sure whether composition is the only possible operation. But in the same sense my definition also lacks arbitrariness. > - Christopher -Wm