[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Issue: DECLARE-TYPE-FREE (Version 6)
- To: Kent M Pitman <KMP@STONY-BROOK.SCRC.Symbolics.COM>
- Subject: Re: Issue: DECLARE-TYPE-FREE (Version 6)
- From: masinter.pa@Xerox.COM
- Date: 5 Dec 88 16:08 PST
- Cc: jar@zurich.ai.mit.edu, cl-cleanup@sail.stanford.edu
- In-reply-to: Kent M Pitman <KMP@STONY-BROOK.SCRC.Symbolics.COM>'s message of Wed, 19 Oct 88 15:42 EDT
After reviewing this, I think I am in favor of having declarations have
more pervasive extent than you outlined in your 19 Oct message. That is, it
should be an error for a variable to have a value that doesn't match the
declared type at any *time* during the extent of the variable binding.
I think would be the only way to talk about
(let ((x 12) (y 'foo))
(flet ((zap () (rotatef x y)))
(locally (declare (fixnum x))
(zap)
(zap)
x)))
Declarations have extent of the enclosing form (until that extent is
exited, as per exit-extent). Type declarations don't have scope. For free
declarations, is an error for the declared variable to have an incorrect
type at any time of the extent of the form; for declarations associated
with a binding, the declaration holds from the instant the binding is
created.
I think this issue will not be in the ballot, unfortunately.....