SHRAGER%CMU-PSY-A@CMU-CS-PT@sri-unix.UUCP (08/18/83)
I'm glad that I didn't have to start this dicussion up this time. Anyhow, here's a suggestion that I think should be implemented but which requires a great deal of Lisp community cooperation. (Oh dear...perhaps it's dead already!) Probably the most intracompatible language around (next to TRAC) is APL. I've had a great deal of success moving APL workspaces from one implementation to another with a minumum of effort. Now, part of this has to do with the fact that APL's primatve set can't be extended easily but if you think about it, the question of exactly how do you get all the stuff in a workspace from one machine to the other isn't an easy one to answer. The special character set makes each machine's representation a little different and, of course, trying to send the internal form would be right out! The APL community solved this rather elegantly: they have a thing called a "workspace interchange standard" which is in a canonical code whose first 256 bytes are the atomic vector (character codes) for the source machine, etc. The beauty of this canconical representation isn't just that it exists, but rather that the translation to and from this code is the RESPONSIBILITY OF THE LOCAL IMPLEMENTOR! That is, for example, if I write a program in Franz and someone at Xerox wants it, I run it through our local workspace outgoing translator which puts it into the standard form and then I ship them that (presumably messy) version. They have a compatible ingoing translator which takes certain combinations of constructs and translates them to InterLisp. Now, of course, this isn't all that easy. First we'd have to agree on a standard but that's not so bad. Most of the difficulty in deciding on a standard Lisp is taste and that has nothing to do with the form of the standard since no human ever writes in it. Another difficulty (here I am endebted to Ken Laws) is that many things have impure semantics and so cannot be cleanly translated into another form -- take, for example, the spaghetti stack (please!). Anyhow, I never said it would be easy but I don't think that it's all that difficult either -- certainly it's easier than the automatic programming problem. I'll bet this would make a very interesting dissertation for some bright young Lisp hacker. But the difficult part isn't any particular translator. Each is hand tailored by the implementors/supporters of a particular lisp system. The difficult part is getting the Lisp world to follow the example of a computing success, as, I think, the APL world has shown workspace interchange to be.