<!-- 
RSS generated by JIRA (4.4#649-r158309) at Thu May 23 11:07:24 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-731/CLJ-731.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-731] Create macro to variadically unroll a combinator function definition</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-731</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Clojure contains a set of combinators that are implemented in a similar, but slightly different way.  That is, they are implemented as a complete set of variadic overloads on both the call-side and also on the functions that they return.  Visually, they all tend to look something like:&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;(defn foo
  ([f]
     (fn
       ([] do stuff...)
       ([x] do stuff...)
       ([x y] do stuff...)
       ([x y z] do stuff...)
       ([x y z &amp;amp; args] do variadic stuff...)))
  ([f1 f2]
     (fn
       ([] do stuff...)
       ([x] do stuff...)
       ([x y] do stuff...)
       ([x y z] do stuff...)
       ([x y z &amp;amp; args] do variadic stuff...)))
  ([f1 f2 f3]
     (fn
       ([] do stuff...)
       ([x] do stuff...)
       ([x y] do stuff...)
       ([x y z] do stuff...)
       ([x y z &amp;amp; args] do variadic stuff...)))
  ([f1 f2 f3 &amp;amp; fs]
     (fn
       ([] do stuff...)
       ([x] do stuff...)
       ([x y] do stuff...)
       ([x y z] do stuff...)
       ([x y z &amp;amp; args] do variadic stuff...))))
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;To build this type of function for each combinator is tedious and error-prone.&lt;/p&gt;

&lt;p&gt;There must be a way to implement a macro that takes a &quot;specification&quot; of a combinator including:&lt;/p&gt;

&lt;p&gt;1. name&lt;br/&gt;
2. docstring&lt;br/&gt;
3. do stuff template&lt;br/&gt;
4. do variadic stuff template&lt;/p&gt;

&lt;p&gt;And builds something like the function &lt;tt&gt;foo&lt;/tt&gt; above.  This macro should be able to implement the current batch of combinators (assuming that &lt;a href=&quot;http://dev.clojure.org/jira/browse/CLJ-730&quot;&gt;http://dev.clojure.org/jira/browse/CLJ-730&lt;/a&gt; is completed first for the sake of verification).&lt;/p&gt;</description>
                <environment></environment>
            <key id="14344">CLJ-731</key>
            <summary>Create macro to variadically unroll a combinator function definition</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <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="fogus">Fogus</reporter>
                        <labels>
                    </labels>
                <created>Wed, 26 Jan 2011 12:00:01 -0600</created>
                <updated>Fri, 28 Jan 2011 09:40:05 -0600</updated>
                                                    <fixVersion>Approved Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>3</watches>
                        <comments>
                    <comment id="26181" author="stu" created="Fri, 28 Jan 2011 09:03:46 -0600"  >&lt;p&gt;This seems useful. Rich, would you accept a patch?&lt;/p&gt;</comment>
                    <comment id="26185" author="stu" created="Fri, 28 Jan 2011 09:40:05 -0600"  >&lt;p&gt;Nevermind, just saw that Rich already suggested this on the dev list. Patch away.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10003">Vetted</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>
</channel>
</rss>