[Ecls-list] HEADS UP!
Juan Jose Garcia Ripoll
worm at arrakis.es
Tue Apr 8 08:20:05 UTC 2003
I have almost finished the new implementation of SUBTYPEP, and intend to
commit it to the CVS repository tomorrow afternoon. This implies severe
changes on the system, and, even though the new implementation solves many
errors (There will be now only about 700 failures in the GCL test-suite),
there might pieces of ECL which still rely on old quirks.
So, I have tagged the CVS, as it is (with several fixes to the LOG*
operations), as STABLE. Therefore,
+++ Please notify before tomorrow afternoon any problem to build ECL!
Weak hearts should stay with this release until otherwise stated.
As a side note, the new implementation is based on Henry Baker's paper
(http://home.pipeline.com/~hbaker1/). However, I did not use separate tags
for different type classes (arrays, intervals, classes, etc), but rather keep
Furthermore, handling of intervals is a bit more clever: the basic element is
the interval (REAL a *) (Where "A" may be *, an integer, or a list with one
integer), and all other intervals are based on this:
INTEGER => (AND INTEGER (REAL * *))
(RATIO 2 3) => (AND RATIO (REAL 2 *) (NOT (REAL (3) *)))
(INTEGER 0 2) (AND INTEGER (REAL 0 *) (NOT (REAL 3 *)))
When facing a (SATISFIES whatever) or an unknown symbol, the algorithm simply
gives up. There are NO OTHER situations in which the routine does not give a
definitive answer. I will probably add a flag, so that the system may signal
a correctable error when unknown type specifiers are found.
The best thing about having reimplemented SUBTYPEP is that now it is possible
to do types intersections and type inference accurately, and the compiler
will soon benefit from that!
More information about the ecl-devel