From ripley at stats.ox.ac.uk  Mon Jan  7 10:11:18 2008
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Mon, 7 Jan 2008 09:11:18 +0000 (GMT)
Subject: [Rd] S3 vs S4 for a simple package
In-Reply-To: <CB8F09FF-2B71-4A19-BA7D-61CF056E4C22@noc.soton.ac.uk>
References: <CB8F09FF-2B71-4A19-BA7D-61CF056E4C22@noc.soton.ac.uk>
Message-ID: <Pine.LNX.4.64.0801070908360.11790@gannet.stats.ox.ac.uk>

On Mon, 7 Jan 2008, Robin Hankin wrote:

> I am writing a package and need to decide whether to use S3 or S4.
>
> I have a single class, "multipol"; this needs methods for "[" and "[<-"
> and I also need a print (or show) method and methods for arithmetic +-
> */^.
>
> In S4, an object of class "multipol" has one slot that holds an array.
>
> Objects of class "multipol" require specific arithmetic operations;
> a,b being
> multipols means that a+b and a*b are defined in peculiar ways
> that make sense in the context of the package. I can also add and
> multiply
> by scalars (vectors of length one).
>
> My impression is that S3 is perfectly adequate for this task, although
> I've not yet finalized the coding.
>
> S4 seems to be "overkill" for such a simple system.
>
> Can anyone give me some motivation for persisting with S4?
>
> Or indeed reassure me that S3 is a good design decision?

Does performance matter?: S4 dispatch is many times slower than S3 
dispatch for such functions. (It is several times slower in general, but 
the difference is particularly marked for primitives.)

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



[Rd] S3 vs S4 for a simple package
Prof Brian Ripley