[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Naive T Design Questions



    Date: Wed Apr 27 05:35:21 1988
    From: Olin.Shivers at CENTRO.SOAR.CS.CMU.EDU

    VALUES is a better name. 

OK, I'm sold.  I'm glad you didn't say it was a good name.

Or how about IDENTITY?  Just kidding.

    Could we store such a library of stuff on prep?

Prep will probably be going away, so the AI lab sun file servers would
be a better choice.  All you need is someone at MIT to volunteer to
administer the thing.

    But you *do* have to worry about multiple packages if you are doing a
    "real" CommonLisp implementation/translator. Which is useful, not because
    programming in CL is fun, but because there are a lot of CL programs out
    there that would be useful tools for Scheme programmers.

Implementing Common Lisp in T would be possible --- all the right hooks
are there, I think --- but doing enough to allow execution of any but
the most trivial programs would be a major undertaking.  If someone
wants to volunteer, fine, but as usual with this kind of thing, manpower
is very limited and other things are higher priority.  My highest
priority right now is making T support scheme well, which it currently
doesn't.

For anyone contemplating the task, I have a few suggestions:

 1. Take a look at prep:/t/junk/cl/*.t.
 2. Talk to the folks working on Butterfly Lisp at BBN.  They have
    implemented Common Lisp on top of MIT's C Scheme, which has many
    similarities to T (syntax tables and environments work the same way).
    I heard a rumor that some of their code would become publicly available.
 3. Don't try to make packages look like environments; you're bound to
    lose; too many Common Lisp programs depend on being able to go from
    a symbol to its value, which is meaningless in T.  Common Lisp
    bindings should all live in a single global
    environment, just like they do in Common Lisp.  Symbols FOO::X
    and BAR::X must be distinct T symbols.  I suggest using different
    symbols for function bindings, e.g. \#\'FOO::X would be bound in the CL
    environment to the function binding of X in package FOO.  Higher tech
    of course would be to create a new datatype for CL symbols and teach the
    compiler about them.  There probably ought to be an option in syntax
    tables to let one change the way combinations are interpreted, but
    I don't think there is.
 4. To do keywords properly you'll need to teach the object file
    dumper/loader about them.  Probably not hard to do.  Hacking the
    evaluator and compiler front end is trivial; just define an appropriate
    "atom expander" for your syntax table.  Look at the sources for
    the scheme compatibility package.

I have just spent more time on this than I wanted to.