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

Issue: DECLARE-TYPE-FREE (Version 9)



re: If I say (DECLARE (TYPE (SIGNED-BYTE 12) X)), I'd think I'd like it to mean
    that X never even momentarily holds a value that isn't of the declared
    type.

For "bound" type declarations, it does mean this -- because the lexical 
scope includes all the code that can ever be executed during the dynamic
extent of that (binding) contour.  But for "free" type declarations,
we have a choice; we can say that it applies to the lexical scope,
or that it applies to the dynamic extent.  Clearly, the former is
simpler, and more in line with our other views on declaration
scoping; see for example this issue DECLARATION-SCOPE, especially
the parallelism between the scoping rules for variables (lexical)
and those for declarations.


re: I'd like to see the writeup make it clear that the following is subsumed;
    note that this issue never was released or appeared on a Status list, so 
    it should probably just be included:
      Date: Fri, 4 Nov 88 18:05:21 CST
      From: David N Gray <Gray@DSG.csc.ti.com>
      To: cl-cleanup@sail.stanford.edu
      Subject: Issue SPECIAL-TYPE-SHADOWING (V1)
      . . . 
      Proposal SPECIAL-TYPE-SHADOWING:CLARIFY

	Clarify that if there is a local type declaration for a special
	variable, and there is also a global type proclamation for that same
	variable, then the value of the variable within the scope of the local
	declaration must be a member of the intersection of the two declared
	types.


I don't think it is subsumed.  The various versions of DECLARE-TYPE-FREE
permitted an inner nested declaration to be merely overlapping with
an outer declaration; but Gray's proposal requires local (read: "inner")
declarations to be subtypes of the global proclamations (read: "outter")


-- JonL --