... That s a good definition. I did like the one you posted in the last thread, though; the one I listed as #2 in my list above. I like the fact that itMessage 1 of 48 , Dec 31 10:37 PMView SourceChristopher Diggins <cdiggins@...> wrote:
> I just posted my newest definition of concatenative language atThat's a good definition.
> with a deconstruction. I am happy to discuss it here (avoids the
> headache of having to register to leave comments).
I did like the one you posted in the last thread, though; the one I
listed as #2 in my list above. I like the fact that it explicitly
mentions concatenation (making the rationale for the name clear), and
it also depends on the concept of associativity, which directly drives
the ability to easily factor.
I do suspect that the definition might be a little improved by
hybridizing it with your newest one, perhaps something like this:
"A concatenative programming language is language in which terms
correspond to functions and in which the juxtaposition of terms
denotes an associative operation on functions."
Heh... That was simpler than I thought.
Is it TOO general? It seems to me to cover all the cases, even the
non-interesting ones (such as where the operation is multiplication).
... Interesting! Here are the semantics I d use (in a more Joy-like, single-stack context): freeze F - [F] F F [G] thaw - G This is the first time I ve had aMessage 48 of 48 , Jan 15, 2009View SourceOn Jan 13, 2009, at 7:29 AM, pml060912 wrote:
> Well, where does Furphy fit in this breakdown?Interesting!
> Although it does have quotation, as I mentioned elsewhere that's just
> syntactic sugar. The fundamental constructs are Reverse Polish naming
> and concatenation, which can use the complementary keywords FREEZE and
> THAW to defer and invoke evaluation/execution - and those can be built
> from the return stack manipulation keywords R> and >R already found in
> Forth. That looks fairly associative/flat to me.
Here are the semantics I'd use (in a more Joy-like, single-stack
freeze F -> [F] F
F [G] thaw -> G
This is the first time I've had a rewrite rule with a "row" on the
*right* side of the function.
What 'freeze' would basically do is take the rest of the program and
return a new program that is prefixed with a quoted version of itself.
What 'thaw' would do is take a program 'F' with a quotation '[G]' on
top and return the new program 'G'. This seems like something that
could be added to a Joy-like language very simply (excepting that
pesky "implementation" part).
This sounds a lot like XY: