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


While I think #, or LOAD-TIME-VALUE is an important functionality to have
in some form, I agree with those who say that the number of source code
lines which use #, are very small. As such, I don't think we should waste
a lot of effort specifying what #, should do since I believe the process
of converting any uses of #, to uses of LOAD-TIME-VALUE will be utterly
straightforward if we just provide rewrite advice.

Moreover, unless the semantics you come up with for #, are exactly those
which implementations already adhere to, then you're introducing a lurking
compatibility problem which is perhaps worse than having #, disappear.
People will be forced to check their code for the need to rewrite anyway
if it doesn't always work compatibly. While they're in there, they might as
well just rewrite to LOAD-TIME-VALUE explicitly to make sure their intent
is clear.

I argue that a change which is less compatible, but more reliably detectable
is better than a change which is more compatible but less reliably detectable.

For example: The transition from Maclisp / to CL / was one of the biggest
hurdles that Macsyma had to overcome. The fact that / would continue to do
something which was mostly right but different in subtle ways was not a help
but a hindrance. If there had been no / operator, we'd have been better off.
Ultimately, we shadowed / in Macsyma and I think that to this day it is not
used for fear that the many implementors who grew up on Maclisp / will get

I think this case of #, is similar to this example. If you just remove it,
you avoid a very big potential for confusion and permit implementations
to provide compatibility as they see it to be appropriate for the needs of
their customers.