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

Coping with TC



    Date: 8-Jun-82 6:17PM-EDT (Tue)
    From: Chris Riesbeck <Riesbeck>
    To:   T-Bugs
    Re:   bug in TC?

    The file UTILS.T appears to compile file, but the file PRELIST.T
    which uses the LOOP macro defined in UTILS blows up immediately
    with a LABELS undefined function object message.  UTILS+PRELIST
    works fine interpreted on the Apollo. I don't know if the compiled
    UTILS works correctly to support PRELIST.

If you get LABELS UNDEFINED FUNCTION OBJECT it's probably because some
macro expander requires more than just those routines which are in Maclisp
and in the compiler's "T compatibility mode" to run, e.g. LABELS.  TCOMP in
Maclisp has no T interpreter; macro expanders are run directly in
Maclisp, and usually work only if they're pretty carefully written.

This problem should go away when the compiler runs in T, which should be
by July 1.  If you think there are some things I've left out of the
(undocumented) compatibility mode which can be trivially added, let me
know.  If you think you can write your code so it'll run in Maclisp but
not compatibly with T, then make use of the following kludge/feature:
put the macro definitions you need in some file FOO.6SUPPORT and put as
the first form of your file
	(HERALD PRELIST (ENV T "FOO"))
Use DEFINE-COMPILER-MACRO instead of DEFINE-MACRO in the 6SUPPORT file.

If you cannot write your code so it will run in Maclisp at all, you'll
have problems until July.  But looking at your code for LOOP I don't
immediately see that you'd have problems.

LABELS in the T compiler seems to be having some problems.  I'll fix
them as soon as I can.  In the meantime I discourage making heavy use of
LABELS for things other than iteration or "trivial procedures" (those
which refer to no local LAMBDA-bound variables), if you want your code
to compile.