What is a concatenative language?

Michael Nedzelsky — 2007-05-01 18:29:23

Recently I have made some examples in order to better understand the notion of
a concatenative language. I still do not really understand it, though.

The Joy language is a concatenative language and this language contains two
basic constructors: one binary (concatenation) and one unary (quotation).

But what can be said if language contains for example, three constructors,
one binary and two unary. Is this language a concatenative language?

For example:

Let X be a non-empty set.
Let P denotes the set of all partial functions from X into X,
f_a, f_b are some elements of P,
J and R are some mappings from P into P.

Define the following grammar.

Terminal symbols: a, b, [, ], {, }
Production rules:
S --> e | a | b | S S | [ S ] | { S }

Let L denotes the language which generated by this grammar.

The language L has the following semantics:
let M be mapping from L to P, such that
0) M(e) = identity function on X
1) M(a) = f_a
2) M(b) = f_b
3) (\forall x,y \in L) M(xy) = M(x) M(y) # i.e. composition of the functions
M(x) M(y)
4) (\forall x \in L) M( [x] ) = J(M(x))
5) (\forall x \in L) M( {x} ) = R(M(x))

I am really don't know, is L a concatenative or not.
If L is not a concatenative, and we drop the {} constructor from the grammar,
will the resulting language be a concatenative?

What do the others think?

Michael Nedzelsky