[stack] are concatenative languages applicative?

John Nowak <[email protected]>
Newsgroups gmane.comp.lang.concatenative
Message-ID <[email protected]>
Apologies for starting a new thread of sorts, but the "Object Cat"  
thread already had run through three or four different topics, and it  
seems like a good idea to discuss this in such a way that it'll be  
archived properly. I'd really like an answer here.

First off, let me say that I'm not particularly interested in if Joy's  
'i' is an 'eval'. This does, as Chris pointed out, seem to get us  
bogged down in implementation details. As far as I can tell, 'eval' is  
defined to be some procedure that works on code, be that code a string  
or some more structured form of data. In a language like Cat, there's  
no such code being passed around as there is in Joy, and I don't think  
there's anyone here who would say Cat isn't concatenative.

What I'm interested in is this "dequotation" rule:

    [$A] i  ==  $A

In other words, these are all equivalent:

    1 2 [3 * *] i  ==  1 2 3 * *  ==  1 [2 3] i [* *] i

An important thing to note here is that this translation is just a  
rewriting of function-level code. '$A' is a function, not a value.   
This seems fundamentally different from this rule in the combinatory  
calculus, where 'x' is a *value*, not a function:

    (I x)  ==  x

(William already has said essentially the same thing with respect to  
operators and operands.)

I guess my questions are as follows: Are concatenative languages  
applicative, and if so, what's the equivalent of '[$A] i == $A' in the  
lambda calculus? If such a translation cannot be given, does that mean  
concatenative languages are non-applicative? If so, is there another  
term besides "concatenative" that can be used to describe their  
properties?

- John
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.