[net.ai] Lisp to Lisp translation again

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.