Role of combinators in concatenative/tacit programming languages
Asked Answered
P

2

16

What exact role do higher-order combinators (or function producers) hold in concatenative and tacit programming?

Is there another way to implement a concatenative programming language rather than directly manipulating the stack?

How tight is the relation between the combinators mentioned and Schonfinkel's combinatory logic?

Paperback answered 8/5, 2010 at 4:36 Comment(1)
This question was referenced in the blog post Why Concatenative Programming Matters.Alyose
S
-4

In my answer to "Explain Concatenative languages to me like I’m an 8 year old" I argued that it is not useful to use the word "concatenative" to describe programming languages. This area appears to be a private playground for Manfred von Thun. There is no real definition of what constitutes a concatenative language, and there is no mature theory underlying the idea of a concatenative language. Because the concept is not really defined, it is impossible to provide a definitive explanation of the role of combinators.

You might prefer to spend your time studying more well-established topics such as combinatory logic, SK combinators, lambda calculus, and graph-reduction machines. If you are interested in point-free programming from a more pragmatic perspective, APL, Forth, and PostScript are all well worth studying.

Swivet answered 8/5, 2010 at 20:33 Comment(4)
Thanks, I've read the post mentioned and will surely investigate in the topics you denotedPaperback
I think that you go too far when you say it is not useful to use the word "concatenative" to describe programming languages - it is rather an unclear but useful concept, one that becomes incoherent when you push it too far, an instance of the family-resemblance concepts like "game" that Wittgenstein criticised. And if they are a playground for Manfred von Thun, they are not private: I found Christopher Diggins' work on Cat interesting.Bandoline
A response to this answer can be found here: evincarofautumn.blogspot.com/2012/02/… Why Concatenative Programming MattersSleight
I hate seeing this as the accepted answer. It's wrong. Being concatenative is having the property that you can chop a part of it and it's a valid program, and join programs and get another program. So simple it doesn't need much explaining, really. There are other things to concatenative programming languages, but that's the defining feature. It also fails at answering any of OP's questions.Gooding
P
11

Is there another way to implement a concatenative programming language rather than directly manipulating the stack?

Yes. The Enchilada language is based on term rewriting.

Pocked answered 24/10, 2010 at 21:6 Comment(2)
+1, although their definition "Concatenative: the syntactic concatenation of postfix expressions, yields valid expressions" is just the sort of offbeat idea that Norman complains about in his answer.Bandoline
Yeah, I think everyone involved in "concatenative" languages kind of makes up the definition for themselves. The geenral "feel" of the languages are the same though, so I won't worry about it :)Pocked
S
-4

In my answer to "Explain Concatenative languages to me like I’m an 8 year old" I argued that it is not useful to use the word "concatenative" to describe programming languages. This area appears to be a private playground for Manfred von Thun. There is no real definition of what constitutes a concatenative language, and there is no mature theory underlying the idea of a concatenative language. Because the concept is not really defined, it is impossible to provide a definitive explanation of the role of combinators.

You might prefer to spend your time studying more well-established topics such as combinatory logic, SK combinators, lambda calculus, and graph-reduction machines. If you are interested in point-free programming from a more pragmatic perspective, APL, Forth, and PostScript are all well worth studying.

Swivet answered 8/5, 2010 at 20:33 Comment(4)
Thanks, I've read the post mentioned and will surely investigate in the topics you denotedPaperback
I think that you go too far when you say it is not useful to use the word "concatenative" to describe programming languages - it is rather an unclear but useful concept, one that becomes incoherent when you push it too far, an instance of the family-resemblance concepts like "game" that Wittgenstein criticised. And if they are a playground for Manfred von Thun, they are not private: I found Christopher Diggins' work on Cat interesting.Bandoline
A response to this answer can be found here: evincarofautumn.blogspot.com/2012/02/… Why Concatenative Programming MattersSleight
I hate seeing this as the accepted answer. It's wrong. Being concatenative is having the property that you can chop a part of it and it's a valid program, and join programs and get another program. So simple it doesn't need much explaining, really. There are other things to concatenative programming languages, but that's the defining feature. It also fails at answering any of OP's questions.Gooding

© 2022 - 2024 — McMap. All rights reserved.