<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">
<br><div><div>On Feb 21, 2008, at 2:57 PM, Mark Engelberg wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Lucida Grande'; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; ">In my view, this problem has been most satisfactorily solved by "multiple-dispatch" (aka multimethod) object-oriented languages (like Dylan, inspired by CLOS), but for various reasons, this solution hasn't really caught on.  But the quest to solve this problem is why many OO languages are being stretched to incorporate elements of functional programming, and vice versa.</span></blockquote></div><br><div>The problem has two faces: </div><div><br class="webkit-block-placeholder"></div><div> -- given a fixed language, how do you best solve it? I consider this aspect the critical one. </div><div> -- change the language so that the solution becomes easy to formulate. I consider this aspect the fun one. </div><div><br class="webkit-block-placeholder"></div><div>While I agree that solving the problem in a language with multiple dispatch is appealing, I think that a language designer must weight the pros and cons of these features, and based on this, multiple dispatch has too many disadvantages at the moment to make it into mainstream languages. </div><div><br class="webkit-block-placeholder"></div><div>;; --- </div><div><br class="webkit-block-placeholder"></div><div>Of course in PLT Scheme, you can define your own class system and language via a module. And if you have time, I recommend playing with Swindle. </div><div><br class="webkit-block-placeholder"></div><div>-- Matthias</div><div><br class="webkit-block-placeholder"></div></body></html>