Yet Another Joy?
Thursday, August 31, 2006 9:37:35 AM
You can argue if Enchilada brings something new to the other concatenative languages: Joy, Factor and Cat.
I think one of the big improvements over Joy is how programs/expressions are handled. This becomes particularly obvious when we look at Joy's map operator.
JOY: [1 2 + 3 4 *] [dup +] map => [2 4 + 6 8 +]
ENCHILADA: [1, 2, +, 3, 4, *] [dup +] * => [2, 4, + dup +, 6, 8, + dup *]
Note the regularity of Enchilada's semantics: there are no strange exceptions like in the Joy case. I believe Joy's quotations were always considered problematic (even by Manfred von Thun, the maker of Joy) and I think the map operator shows why.
Cat is very similar to Joy and is likely to suffer from the same confusion between quotations and programs. That could change in the future however, because its creator, Christopher Diggins, is still finalizing Cat's exact semantics.
Another improvement over Joy, Factor and Cat is that Enchilada is completely typeless. There is no special number, string or character type. In that respect, Enchilada is closer to Forth and (pure) Lisp then anything else. I'm aware that being typeless might not please the language purists out there, but I like my language to be simple (but not simpler). If there is need for compilation (or theorem proving) you can build such compiler in Enchilada without much effort.
Factor is a very interesting language, especially because it is reaching some critical mass. However, Factor is not purely functional like Enchilada. I believe that referential transparency was never one of Factor's major design goals, but I could be wrong here.
I'm eager to learn some more Factor, because I want to know how it is like to build big concatenative programs (although Forth and Postscript could tell me that too).








doublec # Thursday, August 31, 2006 9:36:48 PM
stevanApter # Friday, September 1, 2006 12:18:46 PM
Robbert van Dalenrapido # Friday, September 1, 2006 12:53:41 PM
The creation of Enchilada didn't come cheap. It took me nearly 6 months to get it that simple. Of course, I looked closely at Joy and Cat but somehow I felt there was something left to 'remove'.
BTW. I have invented this language for other reasons, that are totally not related to Joy. My main goal is to provide (immutable) computing on a large distributed scale. To see how that can work, consider one of the nice features of concatenative languages:
1) you can split a running program in two parts
2) run both of them seperately
3) and concatenate the results
Robbert van Dalenrapido # Friday, September 1, 2006 7:45:35 PM
Although the time tables say that chatting #concatenative really starts getting interesting at 02:00 Amsterdam time! ;-)