From: William H. N. <wil...@ai...> - 2001-10-27 01:13:10
|
On Fri, Oct 26, 2001 at 02:18:11PM -0400, Raymond Toy wrote: > >>>>> "Robert" == Robert Maclachlan <Rob...@ra...> writes: > > [nice discussion snipped] > > Robert> type, even when there is a compile time type error. Given that this is not > Robert> really an array problem at all, I'm inclined to leave that optimizer alone. > > I'll buy that. The code is lying to the compiler in some sense, and I > always believe that if you lie, you deserve what you get and get what > you deserve. :-) I believe that when SAFETY exceeds SPACE and SPEED, what you deserve is snide backtalk (TYPE-ERRORs, etc.) from Lisp system, not random low-level misbehavior. I know ANSI disagrees (leaving it undefined, saying anything is possible), but I think the Python principle, declarations are assertions, is the appropriate way to go. Otherwise it's really tedious and stressful dealing with type declarations in Lisp code. -- William Harold Newman <wil...@ai...> God grant me serenity to accept the code I cannot change, courage to change the code I can, and wisdom to know the difference. -- Erik Naggum PGP key fingerprint 85 CE 1C BA 79 8D 51 8C B9 25 FB EE E0 C3 E5 7C |
From: Raymond T. <to...@rt...> - 2001-10-29 17:40:18
|
>>>>> "William" == William Harold Newman <wil...@ai...> writes: William> On Fri, Oct 26, 2001 at 02:18:11PM -0400, Raymond Toy wrote: >> >>>>> "Robert" == Robert Maclachlan <Rob...@ra...> writes: >> >> [nice discussion snipped] >> Robert> type, even when there is a compile time type error. Given that this is not Robert> really an array problem at all, I'm inclined to leave that optimizer alone. >> >> I'll buy that. The code is lying to the compiler in some sense, and I >> always believe that if you lie, you deserve what you get and get what >> you deserve. :-) William> I believe that when SAFETY exceeds SPACE and SPEED, what you deserve William> is snide backtalk (TYPE-ERRORs, etc.) from Lisp system, not random William> low-level misbehavior. I know ANSI disagrees (leaving it undefined, William> saying anything is possible), but I think the Python principle, William> declarations are assertions, is the appropriate way to go. Otherwise William> it's really tedious and stressful dealing with type declarations in William> Lisp code. Yes, but I don't know enough about how the compiler works to make such a change that doesn't also negatively impact cases where everything is right. Rob also said: We could use the upgraded type whenever (> safety speed), but this perversely eliminates any possiblity of enforcing the declared element type, even when there is a compile time type error. Given that this is not an array problem at all,... You could look at the possiblity of changing the optimizer to not delete the erroneous code when (> safety speed) I think this is the right place to do. I don't know where that is. Ray |