[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