Re: question on the opaque syntax object debate
bear 22 Aug 2005 16:19 UTC
On Mon, 22 Aug 2005, Michael Sperber wrote:
>> Separating phases "for abstraction" seems to me a lot like static
>> typing with required declarations "for error checking." That is,
>> it's not a completely bad idea, and absolutely appropriate for some
>> languages, but it's also not consistent with maximum
>> expressiveness.
> The analogy is inappropriate because we're not talking about
> preventing situations that aren't errors, as static checking does.
> Phase violations are always errors, and the lack of checking in
> Common Lisp causes no end of pain.
I don't think I believe that "phase violations are always errors".
Why shouldn't I be able to define a new object type at runtime,
along with specialized syntax that operates on such objects, and
thereafter use those syntax forms in the same program?
This is the same argument as "type violations are always errors"
just rewrapped - it may be (vacuously) true depending on just not
calling something a "violation" unless it's also an error, but
that's not to say there's no legitimate (non-error) use for a
variable taking more than one type in its lifetime, nor for
syntax being defined at runtime.
Bear