[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Issue: DECLARE-TYPE-FREE (Version 9)
- To: Gray@DSG.csc.ti.com
 
- Subject: Issue: DECLARE-TYPE-FREE (Version 9)
 
- From: Jon L White <jonl@lucid.com>
 
- Date: Tue, 10 Jan 89 22:46:24 PST
 
- Cc: masinter.pa@Xerox.COM, CL-Cleanup@sail.stanford.edu
 
- In-reply-to: David N Gray's message of Tue, 10 Jan 89  10:57:15 CST <2809443435-15097074@Kelvin>
 
Well, one of two things needs to be done (and fast!).  Either:
  1. merge SPECIAL-TYPE-SHADOWING:CLARIFY into DECLARE-TYPE-FREE, 
     enlarging the latter to cover PROCLAIM as well as DECLARE.
  2. keep two separate issues, but reconcile the semantics of
     nested, non-identical declarations.
Either way, the "reconcilation" will have to be done [I tend to
favor two separate issues at this point.]
I think you are right that the matter of semantics for nested declarations
isn't adequately treated in the DECLARE-TYPE-FREE proposal.  Sigh.  In
order to accommodate those who argued that mechanical code production
might not be able to guarantee a true SUBTYPE relation for the inner
declarations, I would go for a version that treated an inner declaration
as if it were the intersection of the outter one.  How about you?  In
the example:
   (proclaim '(type some-var (or symbol integer)))
   (let ((x (mumble)))
     (declare (type x number))
     ...
     (locally (declare (type x (or bit character)))
       ;; 'x' is effectively declared to be of type BIT here
     ))
the inner declarations are not subtypes of the outter ones, but at
least the intersections are non-null.
-- JonL --