Re: [stack] Concatenative versus Compositionality
"Daniel Ehrenberg" <[email protected]>
| Newsgroups | gmane.comp.lang.concatenative |
|---|---|
| Message-ID | <[email protected]> |
> That doesn't quite characterize my reasoning. The fact that there is > uncertainty is not of concern to me. I am suggesting that the nature > of these languages is not the concatenativeness (lets define this as > meaning a language where whitespace corresponds to an operation) but > rather the compositionality. Haskell is a language where concatenation > denotes function application, and Joy is a language where > concatenation denotes function composition. What unifies the langauges > so far labelled as concatenative is that they are compositional > (whitespace denotes function composition). Hi Chris, Yeah, this is true, but I don't see why we need to change the words. The use of the term "concatenative" is fairly well-established within our community, and it's not unprecedented to have a term which does not specify all of what the constituent words mean. To take an example from the world of programming languages (though the rest of English is full of them), consider the term 'object-oriented'. Admittedly, this is not the most unambiguous term, but few people call Smalltalk object-oriented. Yet Smalltalk programs do use objects: they manipulate functions, lists, tuples and other types of stuff, or objects. "Concatenative" itself doesn't explain what it means to be concatenative, but the definition is now basically accepted that a concatenative language is one in which concatenation of two independent programs. OK, so this isn't strictly true: we have to define a program such that "1 [ 2" is not a program (since [ isn't a program without a matching ]) and we have to account for side effects. But the essence, in my mind, has been that a concatenative language is one where programs are built from function composition, which is probably indicated through some extremely light-weight syntax like whitespace. Maybe "compositional" is a good way to explain concatenative languages, but the switch of terms would leave "concatenative" without a useful meaning. Referring only to syntax, it doesn't really define a class of semantically-related programming languages. The end effect would be retiring the word "concatenative" in place of an equivalent term, "compositional". I hate to get myself into these definitional debates. If the consensus name is compositional, I will use that name to reduce ambiguity, but I fail to see the purpose in the switch. On the other hand, compositional is a word in my spell checker, unlike concatenative... Daniel Ehrenberg