From jmc at r-project.org  Wed May  4 18:35:24 2011
From: jmc at r-project.org (John Chambers)
Date: Wed, 04 May 2011 09:35:24 -0700
Subject: [Rd] Reference Classes: (Was:  Accessing methods via [[...]],
 bug?)
In-Reply-To: <BANLkTimquWB+LNJtg_AjWGrbqx0Z+beaWQ@mail.gmail.com>
References: <SNT131-w42BCCDD218A68509A634CFB99D0@phx.gbl>
	<BANLkTi=GvhhFmDT1=8sf0j6cM8Tsx3QJ9Q@mail.gmail.com>
	<4DBDDA21.3020809@r-project.org> <4DBDE093.5080300@fhcrc.org>
	<4DBDF900.1010601@r-project.org>
	<BANLkTik8K3kB-Y1-9jk+7HhPVdYA+=DW8w@mail.gmail.com>
	<4DC17C1F.4050504@r-project.org>
	<BANLkTimquWB+LNJtg_AjWGrbqx0Z+beaWQ@mail.gmail.com>
Message-ID: <4DC1804C.80706@r-project.org>

On 5/4/11 9:24 AM, Hadley Wickham wrote:
>>> Are you familiar with "Concepts, Techniques, and Models of Computer
>>> Programming" by van Roy and Haridi?  That's what really helped me to
>>> understand the strengths and weaknesses of the various styles of
>>> programming.
>>
>> Thanks, I wasn't.  Yes, interesting similar distinction between functional
>> and "type" decomposition.  An important associated aspect for us is the
>> distinction between reference objects and "ordinary" R objects, not AFAICS
>> conveyed by their more abstract treatment.
>
> Another discussion I found useful was in SICP:
> http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-17.html#%_sec_2.4.3
>
> I really like the metaphor of method dispatch as a table with types in
> the columns and operations in the rows - then you can think of generic
> functions oo as being row-based, and class based oo as column-based.

Except that functional method dispatch with multiple dispatch is 
dispatched on a K-tple of classes if the generic function has K 
arguments in its signature.

This is not a trivial distinction because it means that a method can 
depend on more than one class definition, so it's not just a matter of 
distributing the same information in different ways, but a fundamentally 
more complicated structure for functional OOP (for better and/or for worse).

John

>
> Hadley
>



[Rd] Reference Classes: (Was: Accessing methods via [[...]], bug?)
John Chambers