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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.