[stack] Re: Yet another?
"pml060912" <[email protected]>
| Newsgroups | gmane.comp.lang.concatenative |
|---|---|
| Message-ID | <[email protected]> |
--- In [email protected], "Don Groves" <dgroves@...> wrote: > > Hello all, > > The trouble with languages such as Joy, which I fell in love with a > couple of years ago, is that, when I hang around them long enough, > they get under my skin. They get into my mind and after a while, take > on a life of their own. My only relief from this situation is to write > one myself, so I am hereby announcing the birth of Catenate, yet > another concatenative language. . . . > Although it is coming along nicely, I haven't anything yet to publish > for others to try but I wanted to introduce myself to the group and > start joining in on the discussions of this highly interesting topic. > > Sincerely, > > Don Groves That's roughly how I got here. My occasional work on my own concatenative language, Furphy, is on the page http://member.netlink.com.au/~peterl/furphy.html (though that might not be true after next week, when I may have to change ISPs - buy now while stocks last). So far I don't have a whole language, just paper models and constructs I have tested out on top of Forth. The next stage, if I get around to it, is to implement that in an Eforth like way on top of Perl or Euphoria to snarf (piggyback) their garbage collection while I prototype a bit more, and maybe their associative indexing too. It doesn't seem worth committing to a more efficient machine code implementation including the work of implementing garbage collection etc. until I'm sure I know what I've got. I've got some of Henry Baker's ideas in mind about that, as food for thought (e.g. an instruction stack instead of a return stack, and making a whole new copy on any DUP to simplify freeing up). There is one construct I found that I really like, so far. That is to compile new words anonymously, using unrecognised words to flag both termination and naming, with end of source terminating the final anonymous word which is then executed/evaluated. That allows a simple compile and go behaviour without modes or immediate words, although I shall probably provide some for implementing syntactic sugar more conveniently (a preprocessor could provide it, so this doesn't break the fundamental model). Another construct is more fundamental but not as aesthetically pleasing to my eyes, the pair FREEZE and THAW to cause and complete partial evaluation so that IF - which has to be eager - can have a workaround for lazy evaluation that works a bit like the referencing workaround in plain vanilla C to make argument passing by value achieve the effect of passing by name. And I am considering making a user interface that is somewhat spreadsheet oriented, drawing on work done for the Z88 and the Canon Cat, though that is further down the track and I may never get there. P.M.Lawrence.