[stack] Re: Yet another?
"pml060912" <[email protected]>
| Newsgroups | gmane.comp.lang.concatenative |
|---|---|
| Message-ID | <[email protected]> |
--- In [email protected], Don Groves <dgroves@...> wrote: > > Thanks, Christopher and Peter for your kind replies. > > I've looked at Cat before, Christopher, and found it very impressive! > I'll be > most pleased if Catenate ever approaches Cat's level of sophistication. > > I just tried to read up on Furphy but the url wasn't found, so Peter > may be > changing his ISP even sooner that he thought. I checked, and it's actually at http://member.netlink.com.au/~peterl/furphy.htm - I was quoting an earlier version from before the ISP moved everything around to suit itself. If you get there you'll see that I too looked at a fair bit of Henry Baker's thinking on linearity. The idea of not having to make repeated copies by passing a reference to one function after another sort of works, but it forces you into continuation passing (or something very like it), which may not suit the internal logic of the functions - or your own personal style. There's no real saving if the function effectively has to copy to have something to work with itself. One thing I thought of that would help with linearity is to define Forth style @ and ! in terms of DUP, DROP and an inherently conservative/linear MEMSWAP ( newconts addr --- oldconts addr ) or possibly with stack effects the other way around, and maybe in terms of SWAP and other inherently conservative/linear stuff too. Then a wide range of behaviour can be built on the @ and ! even if those don't get made publicly available in the main language, and you only need to get DUP and DROP respecting the linearity to carry everything else. You can implement dedicated efficient versions later, but this lets you have everything in a prototype carried on a small base that you can more easily test fully. This is paper model stuff I have only sketched out so far, not prototyped yet. The thing that reminded me of that is, MEMSWAP does naturally work in that continuation passing way just to be conservative/linear. You have to throw away an unwanted address on purpose, separately. PML.