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