In S-PLUS, is() does catch parent S3 classes. It does not require a setOldClass definition to do so. I would prefer that R work the same way, to make porting code easier.
I use is() in S-PLUS for both S3 and S4 classes because it is faster than inherits(). I use inherits() only for testing a vector of classes, rather than a single class. To suggest that S3 has no class inheritance seems odd. We use inheritance of S3 classes all the time - "ordered" inheriting from "factor", many classes inheriting from "data.frame", etc. I see no problem in having inheritance without class definitions. >>>>>> "TimH" == timh <[EMAIL PROTECTED]> >>>>>> on Sat, 5 Jan 2008 02:05:08 +0100 (CET) writes: > > TimH> is() does not catch parent S3 classes: > > >> library(splines) > >> temp <- bs(1:99, df=5) > >> class(temp) > TimH> [1] "bs" "basis" > >> is(temp, "basis") > TimH> [1] FALSE > > TimH> In contrast, is() does catch parent S4 classes: >... > >Yes, that's all correct, but where's the bug? > >S3 has *NO* class definitions, so how can there be class >inheritance? >There's many reasons to go from S3 to S4, and the lack of class >definitions in S3 is an important one... > >Now, still being curious: Are you implicitly saying that in S-plus, >is() behaves differently, namely >``as if S3 classes would exist?'' (:-) ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel