# 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