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

Re: Issue: DECLARE-TYPE-FREE (Version 6)



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.....