www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Open Multi-Methods article

reply bearophile <bearophileHUGS lycos.com> writes:
The "lambda the ultimate" blog often shows interesting articles:

"Open Multi-Methods for C++", by Peter Pirkelbauer, Yuriy Solodkyy, and Bjarne
Stroustrup:
http://lambda-the-ultimate.org/node/2590
http://www.research.att.com/~bs/multimethods.pdf

They seem fast enough too.

Bye,
bearophile
Jan 04 2008
parent reply "Bruce Adams" <tortoise_74 yeah.who.co.uk> writes:
On Fri, 04 Jan 2008 12:34:05 -0000, bearophile <bearophileHUGS lycos.com>  
wrote:

 The "lambda the ultimate" blog often shows interesting articles:

 "Open Multi-Methods for C++", by Peter Pirkelbauer, Yuriy Solodkyy, and  
 Bjarne Stroustrup:
 http://lambda-the-ultimate.org/node/2590
 http://www.research.att.com/~bs/multimethods.pdf

 They seem fast enough too.

 Bye,
 bearophile

Support for multi-dispatch is one thing I'm hoping to see in a future iteration of D. To summarise the paper they propose a syntax for open methods (which are free functions) as opposed to multi-methods using virtual as an argument qualifier. bool intersect(virtual Shape&, virtual Shape&); // open−method bool intersect(virtual Rectangle&, virtual Circle&); This doesn't look a bad solution for either C++ or D2.x/3.x.
Jan 05 2008
parent Robert Fraser <fraserofthenight gmail.com> writes:
Bruce Adams wrote:
 On Fri, 04 Jan 2008 12:34:05 -0000, bearophile 
 <bearophileHUGS lycos.com> wrote:
 
 The "lambda the ultimate" blog often shows interesting articles:

 "Open Multi-Methods for C++", by Peter Pirkelbauer, Yuriy Solodkyy, 
 and Bjarne Stroustrup:
 http://lambda-the-ultimate.org/node/2590
 http://www.research.att.com/~bs/multimethods.pdf

 They seem fast enough too.

 Bye,
 bearophile

Support for multi-dispatch is one thing I'm hoping to see in a future iteration of D. To summarise the paper they propose a syntax for open methods (which are free functions) as opposed to multi-methods using virtual as an argument qualifier. bool intersect(virtual Shape&, virtual Shape&); // open−method bool intersect(virtual Rectangle&, virtual Circle&); This doesn't look a bad solution for either C++ or D2.x/3.x.

I prefer the MultiJava syntax meself: boolean intersect(Shape s1, Shape s2); boolean intersect(Shape Rectangle s1, Shape Circle s2);
Jan 06 2008