<!-- 
RSS generated by JIRA (4.4#649-r158309) at Sun May 26 01:22:02 CDT 2013

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
For example:
http://dev.clojure.org/jira/si/jira.issueviews:issue-xml/CLJ-396/CLJ-396.xml?field=key&field=summary
-->
<rss version="0.92" >
<channel>
    <title>Clojure JIRA</title>
    <link>http://dev.clojure.org/jira</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>4.4</version>
        <build-number>649</build-number>
        <build-date>25-07-2011</build-date>
    </build-info>

<item>
            <title>[CLJ-396] Better support for multiple inheritance in hierarchies and multimethods</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-396</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;While the hierarchies produced with &apos;derive&apos; allow multiple parents per child, there is no way to indicate precedence between those parents, other than by laboriously specifying &apos;prefer-method&apos; for every type X every multimethod. When 2 multimethods are both applicable to the supplied arguments, Clojure produces a nonspecific IllegalArgumentException containing only an error string. All this means that while Clojure does have an &quot;inheritance&quot; mechanism in the form of the ad hoc hierarchies, it is currently not really possible to implement multiple inheritance using the ad hoc hierarchy mechanism. &apos;Prefer-method&apos; will not scale up to use in large applications with complex type hierarchies and heavy use of multimethods. &lt;/p&gt;

&lt;p&gt;Some potential ways to solve this are:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;allowing &apos;defmulti&apos; to take a &apos;tie-breaker&apos; function (tie-breaker &lt;span class=&quot;error&quot;&gt;&amp;#91;arglist speclist1 speclist2&amp;#93;&lt;/span&gt; ...) which is called instead of throwing an IllegalArgumentException, and must return the &apos;winning speclist&apos;.&lt;/li&gt;
	&lt;li&gt;instead of throwing IllegalArgumentException, throw a TiedMultiMethodsException &amp;#8211; the exception instance should contain the offending speclists, the function, and the arguments that were supplied.&lt;/li&gt;
	&lt;li&gt;allowing specification of precedence when using &apos;derive&apos; (if only via a &quot;last in = highest precedence&quot; rule).&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Paul&lt;/p&gt;</description>
                <environment></environment>
            <key id="13793">CLJ-396</key>
            <summary>Better support for multiple inheritance in hierarchies and multimethods</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="1" iconUrl="http://dev.clojure.org/jira/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 7 Jul 2010 02:51:00 -0500</created>
                <updated>Tue, 24 Aug 2010 11:06:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>3</watches>
                        <comments>
                    <comment id="24087" author="importer" created="Tue, 24 Aug 2010 11:06:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/396&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/396&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>
</channel>
</rss>