This page is part of the web mail archives of SRFI 72 from before July 7th, 2015. The new archives for SRFI 72 contain all messages, not just those from before July 7th, 2015.
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