<!--
RSS generated by JIRA (4.4#649-r158309) at Tue Jun 18 23:50:38 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/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?jqlQuery=fixVersion+%3D+Backlog+AND+project+%3D+CLJ&tempMax=1000&field=key&field=summary
-->
<!-- If you wish to do custom client-side styling of RSS, uncomment this:
<?xml-stylesheet href="http://dev.clojure.org/jira/styles/jiraxml2html.xsl" type="text/xsl"?>
-->
<rss version="0.92">
    <channel>
        <title>Clojure JIRA</title>
        <link>http://dev.clojure.org/jira/secure/IssueNavigator.jspa?reset=true&amp;jqlQuery=fixVersion+%3D+Backlog+AND+project+%3D+CLJ</link>
        <description>An XML representation of a search request</description>
                <language>en-us</language>
                        <issue start="0" end="98" total="98"/>
                <build-info>
            <version>4.4</version>
            <build-number>649</build-number>
            <build-date>25-07-2011</build-date>
        </build-info>
<item>
            <title>[CLJ-826] Include drop, take, butlast from clojure.contrib.string (1.2) in clojure.string 1.3</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-826</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;From clojure.contrib.string 1.2, I have found myself using drop, take,&lt;br/&gt;
and butlast. (These are more than just wrappers for String/substring,&lt;br/&gt;
because they behave nicely when indices exceed the string length.) I&lt;br/&gt;
like these methods in part because they match the behavior of&lt;br/&gt;
corresponding sequence methods, but have better performance. This&lt;br/&gt;
makes optimizing (when needed) easier. &lt;/p&gt;</description>
                <environment></environment>
            <key id="14571">CLJ-826</key>
            <summary>Include drop, take, butlast from clojure.contrib.string (1.2) in clojure.string 1.3</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="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="arthuredelstein">Arthur Edelstein</reporter>
                        <labels>
                    </labels>
                <created>Mon, 8 Aug 2011 12:58:18 -0500</created>
                <updated>Fri, 2 Dec 2011 09:14:37 -0600</updated>
                    <resolved>Fri, 2 Dec 2011 09:14:37 -0600</resolved>
                            <version>Backlog</version>
                                <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>3</votes>
                        <watches>2</watches>
                        <comments>
                    <comment id="26711" author="thnetos" created="Mon, 8 Aug 2011 13:22:43 -0500"  >&lt;p&gt;Attached patch for adding the methods.&lt;/p&gt;</comment>
                    <comment id="26712" author="thnetos" created="Mon, 8 Aug 2011 18:28:24 -0500"  >&lt;p&gt;I intentionally left out the {:added &quot;_&quot;} from the vars since I have no idea when this will be added.&lt;/p&gt;

&lt;p&gt;This (as expected) causes this test to fail:&lt;br/&gt;
     &lt;span class=&quot;error&quot;&gt;&amp;#91;java&amp;#93;&lt;/span&gt; FAIL in (public-vars-with-docstrings-have-added) (metadata.clj:42)&lt;br/&gt;
     &lt;span class=&quot;error&quot;&gt;&amp;#91;java&amp;#93;&lt;/span&gt; expected: (= [] (remove (comp :added meta) public-vars-with-docstrings))&lt;br/&gt;
     &lt;span class=&quot;error&quot;&gt;&amp;#91;java&amp;#93;&lt;/span&gt;   actual: (not (= [] (#&apos;clojure.string/butlast #&apos;clojure.string/drop #&apos;clojure.string/take)))&lt;/p&gt;

&lt;p&gt;Which is easily remedied. If desired, let me know what version this will be added to and I&apos;ll submit a new patch with the :added metadata included.&lt;/p&gt;</comment>
                    <comment id="27282" author="thnetos" created="Sat, 12 Nov 2011 16:29:22 -0600"  >&lt;p&gt;I have attached a patch with &quot;1.4&quot; as the added version now that 1.3 has been released.&lt;/p&gt;</comment>
                    <comment id="27307" author="chouser@n01se.net" created="Fri, 18 Nov 2011 22:29:46 -0600"  >&lt;p&gt;The algorithms, docs, and tests look good.  I think the functions would be better if they used clojure.core/subs like the rest of clojure.string does, instead of .substring.  This is more idiomatic Clojure and allows you to avoid hinting the String arg.&lt;/p&gt;

&lt;p&gt;When a new patch is uploaded, please remember to set the Patch field of this ticket to &quot;Code and Test&quot; and the Approval field to &quot;Test&quot;.  Hopefully this will lead to faster screening.&lt;/p&gt;</comment>
                    <comment id="27335" author="thnetos" created="Mon, 21 Nov 2011 12:50:49 -0600"  >&lt;p&gt;Attached a patch that uses subs instead of .substring (clj-826-add-take-drop-butlast-v3.diff).&lt;/p&gt;</comment>
                    <comment id="27390" author="stu" created="Fri, 2 Dec 2011 09:14:26 -0600"  >&lt;p&gt;These fns were left out intentionally. Feel free to propose a contrib home for them, though.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="10311" name="clj-826-add-take-drop-butlast.diff" size="2423" author="thnetos" created="Mon, 8 Aug 2011 13:22:43 -0500" />
                    <attachment id="10712" name="clj-826-add-take-drop-butlast-v3.diff" size="2463" author="thnetos" created="Mon, 21 Nov 2011 12:50:49 -0600" />
                    <attachment id="10699" name="clj-826-add-take-drop-butlast-with-versions.diff" size="2477" author="thnetos" created="Sat, 12 Nov 2011 16:29:22 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10013">Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10003" key="com.atlassian.jira.plugin.system.customfieldtypes:userpicker">
                <customfieldname>Waiting On</customfieldname>
                <customfieldvalues>
                    <customfieldvalue>thnetos</customfieldvalue>
                </customfieldvalues>
            </customfield>
                            </customfields>
    </item>

<item>
            <title>[CLJ-821] should reify merge rather than replace on repeated specs? </title>
                <link>http://dev.clojure.org/jira/browse/CLJ-821</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;reify, deftype, and the like fail silently if you specify a class twice:&lt;/p&gt;

&lt;p&gt;(macroexpand &apos;(reify Map (size &lt;span class=&quot;error&quot;&gt;&amp;#91;this&amp;#93;&lt;/span&gt; 0), &lt;br/&gt;
                     Counted (count &lt;span class=&quot;error&quot;&gt;&amp;#91;this&amp;#93;&lt;/span&gt; 0), &lt;br/&gt;
                     Map (keySet &lt;span class=&quot;error&quot;&gt;&amp;#91;this&amp;#93;&lt;/span&gt; nil)))&lt;br/&gt;
;=&amp;gt; (reify* &lt;span class=&quot;error&quot;&gt;&amp;#91;Counted Map&amp;#93;&lt;/span&gt; (count &lt;span class=&quot;error&quot;&gt;&amp;#91;this&amp;#93;&lt;/span&gt; 0) (keySet &lt;span class=&quot;error&quot;&gt;&amp;#91;this&amp;#93;&lt;/span&gt; nil))&lt;/p&gt;

&lt;p&gt;The later Map section entirely supersedes the former, which I discovered when I wrote a macro that injects some automated method bodies into a reify for you.&lt;/p&gt;

&lt;p&gt;I&apos;ve attached a fix to make the above expand to the expected &lt;span class=&quot;error&quot;&gt;&amp;#91;for me, anyway&amp;#93;&lt;/span&gt; output.&lt;/p&gt;</description>
                <environment></environment>
            <key id="14493">CLJ-821</key>
            <summary>should reify merge rather than replace on repeated specs? </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="amalloy">Alan Malloy</reporter>
                        <labels>
                    </labels>
                <created>Wed, 20 Jul 2011 01:53:45 -0500</created>
                <updated>Tue, 9 Aug 2011 14:18:40 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="26650" author="stu" created="Mon, 25 Jul 2011 17:01:35 -0500"  >&lt;p&gt;In Clojure, it is generally the case that redefining something &lt;b&gt;replaces&lt;/b&gt; the original, as opposed to augmenting it by merging the old and the new. This makes it easy to reason locally about how code works. One could argue that the following snippet has the same kind of issue you describe:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(defn foo [a] 1)
(defn foo [a b] 1)
(foo 1) ; is it a bug that the first arity is gone?&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I also wonder whether the current behavior might be a convenience for some macros. (Clearly it wasn&apos;t for yours!) I am changing the type and title of the ticket to better reflect the nature of the request and see what the BDFL says. &lt;/p&gt;</comment>
                    <comment id="26666" author="richhickey" created="Fri, 29 Jul 2011 07:32:37 -0500"  >&lt;p&gt;Everything in this ticket needs to be said with more precision. I don&apos;t know what exactly the problem is nor what the proposed solution is. &lt;/p&gt;

&lt;p&gt;One thing to note is that it is necessary to accept definitions under base interfaces, so the class areas are not strict, nor expected to be complete.&lt;/p&gt;</comment>
                    <comment id="26714" author="amalloy" created="Tue, 9 Aug 2011 14:16:53 -0500"  >&lt;p&gt;Stuart: The two foo forms you give are entirely separate, and to unify the two behaviors you would have to group them together. It&apos;s not at all unreasonable to suppose the user wants to define foo once, fiddle with it, and then redefine it - clojure.core does similar stuff with let, reduce, etc.&lt;/p&gt;

&lt;p&gt;As written, deftype/reify have a somewhat similar &quot;look&quot; - because there is nothing physically grouping the declaration of Map with its functions, it&apos;s not clear what should happen when a heading like Map is given twice, and it&apos;s not specified in the docs.&lt;/p&gt;

&lt;p&gt;I think the difference is that in the reify case, the two are in the &lt;em&gt;same top-level form&lt;/em&gt;, so the compiler can detect that you&apos;re trying to do something &quot;weird&quot;, so a silent redefinition (reasonable for your defn example) is surprising. There are a number of solutions that would reduce this surprise:&lt;/p&gt;

&lt;p&gt;1) Permit or require reify to group things, as in (reify (Comparable (compare &lt;span class=&quot;error&quot;&gt;&amp;#91;this other&amp;#93;&lt;/span&gt; 1))). Then the explicit grouping of Comparable with its methods serves two purposes: it implies that other definitions for Comparable should be included in that grouping; and it makes it easier to &lt;b&gt;do&lt;/b&gt; that, because you can just iterate over forms until you find Comparable, and then insert another definition.&lt;/p&gt;

&lt;p&gt;2) Throw an exception if an interface is specified twice. This is not ideal because it can be a lot of work for the user to group things together themselves, while it&apos;s easy for deftype to do given the grouping it&apos;s already doing. However, it would avoid the confusion and surprise, by saying &quot;that&apos;s not allowed&quot; rather than leaving the user guessing what&apos;s gone wrong.&lt;/p&gt;

&lt;p&gt;3) Interpret my original example code as an attempt to open the Map interface, add implementations, and then later add some more implementations.&lt;/p&gt;

&lt;p&gt;I would have liked reify to implement (1) to begin with, but at this point I don&apos;t think the syntax is backwards-compatible, so it doesn&apos;t seem like a good idea. I suppose either (2) or (3) is fine, and they both seem like an improvement over the current confusing behavior. Of course, I prefer (3), but I can understand a desire to make reify reject syntax that is not immediately obvious in intent rather than interpreting it as what I think is the most useful intent.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="10281" name="0001-Make-deftype-reify-extend-tolerant-of-interfaces-spe.patch" size="1540" author="amalloy" created="Wed, 20 Jul 2011 01:54:06 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[CLJ-806] clojure.test/are does not fail with insufficient arguments</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-806</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;If clojure.test/are is given an argument set with missing parameters, it silently ignores the extra parameters at the end instead of failing.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Clojure 1.3.0-master-SNAPSHOT
user=&amp;gt; (use &apos;clojure.test)
nil
user=&amp;gt; (deftest foo (are [x y] (= x y) 1 1 2 2 3 4))
#&apos;user/foo
user=&amp;gt; (foo)

FAIL in (foo) (NO_SOURCE_FILE:6)
expected: (= 3 4)
  actual: (not (= 3 4))
nil
user=&amp;gt; (deftest missing-argument (are [x y] (= x y) 1 1 2 2 3))
#&apos;user/missing-argument
user=&amp;gt; (missing-argument)
nil  ;; doesn&apos;t fail&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="14453">CLJ-806</key>
            <summary>clojure.test/are does not fail with insufficient arguments</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="3">Duplicate</resolution>
                                <assignee username="stuart.sierra">Stuart Sierra</assignee>
                                <reporter username="stuart.sierra">Stuart Sierra</reporter>
                        <labels>
                    </labels>
                <created>Fri, 3 Jun 2011 08:33:12 -0500</created>
                <updated>Thu, 16 Feb 2012 11:43:13 -0600</updated>
                    <resolved>Thu, 16 Feb 2012 11:43:13 -0600</resolved>
                            <version>Backlog</version>
                                <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="27727" author="tsdh" created="Thu, 16 Feb 2012 11:43:13 -0600"  >&lt;p&gt;Duplicate of &lt;a href=&quot;http://dev.clojure.org/jira/browse/CLJ-931&quot; title=&quot;Syntactically broken clojure.test/are tests succeed&quot;&gt;&lt;del&gt;CLJ-931&lt;/del&gt;&lt;/a&gt;.  (Well, basically the other way round, but &lt;a href=&quot;http://dev.clojure.org/jira/browse/CLJ-931&quot; title=&quot;Syntactically broken clojure.test/are tests succeed&quot;&gt;&lt;del&gt;CLJ-931&lt;/del&gt;&lt;/a&gt; has a fix attached, so I close this one.)&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>

<item>
            <title>[CLJ-785] Optimize /</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-785</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Optimization to / such that the &lt;tt&gt;&amp;amp; more&lt;/tt&gt; version expands to equivalent of &lt;tt&gt;(/ x (reduce * y more))&lt;/tt&gt; rather than &lt;tt&gt;(reduce / (/ x y) more)&lt;/tt&gt;.  There should be an inlined variant of &lt;tt&gt;&amp;amp; more&lt;/tt&gt; as well.&lt;/p&gt;

&lt;p&gt;This was originally part of &lt;a href=&quot;http://dev.clojure.org/jira/browse/CLJ-184&quot; title=&quot;n-ary bit functions, also inlining of n-ary bit and math operations&quot;&gt;&lt;del&gt;CLJ-184&lt;/del&gt;&lt;/a&gt;, but was pulled out because it&apos;s big enough to be its own ticket.  The rationale is that multiplies are significantly faster than divides on the JVM, and n-ary calls to / could be faster.&lt;/p&gt;

&lt;p&gt;See &lt;a href=&quot;http://lingpipe-blog.com/2009/05/13/java-multiplication-faster-than-division-in-jdk-1-6/&quot;&gt;&quot;Java Multiplication (Much) Faster than Division&quot;&lt;/a&gt; for background and Java benchmarks.&lt;/p&gt;</description>
                <environment></environment>
            <key id="14411">CLJ-785</key>
            <summary>Optimize /</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="alan@thinkrelevance.com">Alan Dipert</reporter>
                        <labels>
                    </labels>
                <created>Sat, 30 Apr 2011 16:09:40 -0500</created>
                <updated>Fri, 13 May 2011 09:26:14 -0500</updated>
                    <resolved>Fri, 13 May 2011 09:26:13 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="26432" author="alan@thinkrelevance.com" created="Fri, 13 May 2011 09:26:14 -0500"  >&lt;p&gt;We don&apos;t want to mess with the semantics of division at the bottom.&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>

<item>
            <title>[CLJ-771] Move unchecked-prim casts to clojure.unchecked</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-771</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Per Rich&apos;s comment in &lt;a href=&quot;http://dev.clojure.org/jira/browse/CLJ-767&quot; title=&quot;Remove support for non-primitive bit-shift operations&quot;&gt;&lt;del&gt;CLJ-767&lt;/del&gt;&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Moving unchecked coercions into unchecked ns is ok&lt;/p&gt;&lt;/blockquote&gt;</description>
                <environment></environment>
            <key id="14395">CLJ-771</key>
            <summary>Move unchecked-prim casts to clojure.unchecked</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="ataggart">Alexander Taggart</assignee>
                                <reporter username="ataggart">Alexander Taggart</reporter>
                        <labels>
                    </labels>
                <created>Thu, 7 Apr 2011 14:37:09 -0500</created>
                <updated>Wed, 13 Feb 2013 00:51:11 -0600</updated>
                                    <version>Backlog</version>
                                <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>2</watches>
                        <comments>
                    <comment id="26410" author="ataggart" created="Fri, 29 Apr 2011 15:41:30 -0500"  >&lt;p&gt;Requires that patch on &lt;a href=&quot;http://dev.clojure.org/jira/browse/CLJ-782&quot; title=&quot;long cast is not checked for Object decimal types&quot;&gt;&lt;del&gt;CLJ-782&lt;/del&gt;&lt;/a&gt; be applied first.&lt;/p&gt;</comment>
                    <comment id="26478" author="stuart.sierra" created="Tue, 31 May 2011 10:43:16 -0500"  >&lt;p&gt;Applies on master as of commit 66a88de9408e93cf2b0d73382e662624a54c6c86&lt;/p&gt;</comment>
                    <comment id="27433" author="richhickey" created="Fri, 9 Dec 2011 08:40:16 -0600"  >&lt;p&gt;still considering when to incorporate this&lt;/p&gt;</comment>
                    <comment id="28539" author="jszakmeister" created="Sat, 19 May 2012 09:36:48 -0500"  >&lt;p&gt;v2 of the patch applies to master as of commit eccde24c7fb63679f00c64b3c70c03956f0ce2c3&lt;/p&gt;</comment>
                    <comment id="29392" author="jafingerhut" created="Fri, 7 Sep 2012 00:40:07 -0500"  >&lt;p&gt;Patch clj-771-move-unchecked-casts-patch-v3.txt dated Sep 6 2012 is the same as Alexander Taggart&apos;s patch move-unchecked-casts.patch except that it has been updated to apply cleanly to latest Clojure master.&lt;/p&gt;</comment>
                    <comment id="29729" author="jafingerhut" created="Sat, 20 Oct 2012 12:18:27 -0500"  >&lt;p&gt;Patch clj-771-move-unchecked-casts-patch-v4.txt dated Oct 20 2012 is the same as Alexander Taggart&apos;s patch move-unchecked-casts.patch except that it has been updated to apply cleanly to latest Clojure master.&lt;/p&gt;</comment>
                    <comment id="30342" author="jafingerhut" created="Tue, 1 Jan 2013 11:37:00 -0600"  >&lt;p&gt;The patch clj-771-move-unchecked-casts-patch-v4.txt applies cleanly to latest master and passes all tests.  Rich marked this ticket as Incomplete on Dec 9 2011 with the comment &quot;still considering when to incorporate this&quot; above.  Is it reasonable to change it back to Vetted or Screened so it can be considered again, perhaps after Release 1.5 is made?&lt;/p&gt;</comment>
                    <comment id="30582" author="jafingerhut" created="Wed, 13 Feb 2013 00:50:43 -0600"  >&lt;p&gt;Patch clj-771-move-unchecked-casts-patch-v5.txt dated Feb 12 2013 is the same as Alexander Taggart&apos;s patch move-unchecked-casts.patch except that it has been updated to apply cleanly to latest Clojure master.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11852" name="clj-771-move-unchecked-casts-patch-v5.txt" size="11956" author="jafingerhut" created="Wed, 13 Feb 2013 00:50:43 -0600" />
                    <attachment id="10213" name="move-unchecked-casts.patch" size="11871" author="ataggart" created="Fri, 29 Apr 2011 15:41:30 -0500" />
                    <attachment id="11235" name="move-unchecked-casts-v2.patch" size="11831" author="jszakmeister" created="Sat, 19 May 2012 09:36:48 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10006">Incomplete</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10003" key="com.atlassian.jira.plugin.system.customfieldtypes:userpicker">
                <customfieldname>Waiting On</customfieldname>
                <customfieldvalues>
                    <customfieldvalue>richhickey</customfieldvalue>
                </customfieldvalues>
            </customfield>
                            </customfields>
    </item>

<item>
            <title>[CLJ-761] print-dup generates call to nonexistent method for APersistentVector$SubVector</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-761</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Originally reported by &lt;a href=&quot;https://groups.google.com/d/topic/clojure/0JYeIgzAwsQ/discussion&quot;&gt;Carson&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;print-dup&lt;/tt&gt; on any collection type generates code to call the &lt;tt&gt;create&lt;/tt&gt; method of the collection&apos;s class.  &lt;tt&gt;APersistentVector$SubVector&lt;/tt&gt; has no &lt;tt&gt;create&lt;/tt&gt; method.&lt;/p&gt;

&lt;p&gt;Example with Clojure at commit ecae8ff08a298777c365a261001adfe9bfa4d83c :&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Clojure 1.3.0-master-SNAPSHOT
user=&amp;gt; (read-string (binding [*print-dup* &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;] (pr-str (subvec [1 2 3] 1))))
IllegalArgumentException No matching method found: create  clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:50)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="14377">CLJ-761</key>
            <summary>print-dup generates call to nonexistent method for APersistentVector$SubVector</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</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="stuart.sierra">Stuart Sierra</reporter>
                        <labels>
                    </labels>
                <created>Sat, 19 Mar 2011 08:36:57 -0500</created>
                <updated>Fri, 4 Nov 2011 11:31:09 -0500</updated>
                                    <version>Backlog</version>
                                <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="27193" author="hiredman" created="Fri, 4 Nov 2011 11:29:27 -0500"  >&lt;p&gt;33.927         hiredman   ,(binding &lt;span class=&quot;error&quot;&gt;&amp;#91;*print-dup* true&amp;#93;&lt;/span&gt; (pr-str (first {:a 1})))&lt;br/&gt;
 33.928  clojurebot   &quot;#=(clojure.lang.MapEntry/create &lt;span class=&quot;error&quot;&gt;&amp;#91;:a 1&amp;#93;&lt;/span&gt;)&quot;&lt;br/&gt;
 33.938         hiredman   yeah, well, I was busy&lt;br/&gt;
 33.941  chouser   heh&lt;br/&gt;
 33.949         hiredman   ,(clojure.lang.MapEntry/create &lt;span class=&quot;error&quot;&gt;&amp;#91;:a 1&amp;#93;&lt;/span&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>

<item>
            <title>[CLJ-732] (keyword &quot;&quot;) can be printed, but not read</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-732</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;user=&amp;gt; (keyword &quot;&quot;)&lt;br/&gt;
:&lt;br/&gt;
user=&amp;gt; (prn-str *1)&lt;br/&gt;
&quot;:\n&quot;&lt;br/&gt;
user=&amp;gt; (read-string *1)&lt;br/&gt;
java.lang.RuntimeException: java.lang.Exception: Invalid token: : (NO_SOURCE_FILE:0)&lt;/p&gt;

&lt;p&gt;This obviously isn&apos;t a huge defect, but I&apos;d argue that anything that can be printed should be readable.&lt;/p&gt;</description>
                <environment></environment>
            <key id="14345">CLJ-732</key>
            <summary>(keyword &quot;&quot;) can be printed, but not read</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="ztellman">Zach Tellman</reporter>
                        <labels>
                    </labels>
                <created>Wed, 26 Jan 2011 17:45:52 -0600</created>
                <updated>Fri, 29 Jul 2011 07:49:21 -0500</updated>
                    <resolved>Fri, 29 Jul 2011 07:49:20 -0500</resolved>
                            <version>Release 1.2</version>
                                <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="26182" author="stu" created="Fri, 28 Jan 2011 09:06:23 -0600"  >&lt;p&gt;Patch that throws IllegalArgumentException would be ok for this.&lt;/p&gt;</comment>
                    <comment id="26348" author="stu" created="Tue, 5 Apr 2011 20:57:08 -0500"  >&lt;p&gt;After a brief review of places that call intern, it appears that this problem might never be reached in the reader, only in user code calling (keyword ...). Does it make more sense to have the patch there, and a matching change for (symbol ...)?&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="10164" name="clj-732.diff" size="1366" author="aredington" created="Fri, 25 Mar 2011 15:53:10 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10006">Incomplete</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                        <customfield id="customfield_10003" key="com.atlassian.jira.plugin.system.customfieldtypes:userpicker">
                <customfieldname>Waiting On</customfieldname>
                <customfieldvalues>
                    <customfieldvalue>richhickey</customfieldvalue>
                </customfieldvalues>
            </customfield>
                            </customfields>
    </item>

<item>
            <title>[CLJ-720] check that argument to keys/vals is a Map</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-720</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Current behavior:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;If you call &lt;tt&gt;keys&lt;/tt&gt; or &lt;tt&gt;vals&lt;/tt&gt; on something that is not a Map, you do not get a ClassCastException until the KeySeq or ValSeq is consumed&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;Calling &lt;tt&gt;keys&lt;/tt&gt; or &lt;tt&gt;vals&lt;/tt&gt; on an empty collection of any type, even non-Map types, returns &lt;tt&gt;nil&lt;/tt&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The attached patch:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;checks the type of the argument to &lt;tt&gt;keys&lt;/tt&gt; and &lt;tt&gt;vals&lt;/tt&gt; and throws IllegalArgumentException if it is neither java.util.Map nor null&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;changes tests for &lt;tt&gt;keys&lt;/tt&gt; and &lt;tt&gt;vals&lt;/tt&gt; to check that those functions throw IllegalArgumentException on empty collections that are not maps&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
            <key id="14333">CLJ-720</key>
            <summary>check that argument to keys/vals is a Map</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="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="stuart.sierra">Stuart Sierra</reporter>
                        <labels>
                    </labels>
                <created>Tue, 18 Jan 2011 21:33:06 -0600</created>
                <updated>Fri, 28 Jan 2011 09:24:22 -0600</updated>
                    <resolved>Fri, 28 Jan 2011 09:24:22 -0600</resolved>
                            <version>Backlog</version>
                                <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="26145" author="richhickey" created="Thu, 20 Jan 2011 07:50:46 -0600"  >&lt;p&gt;Please don&apos;t test for specific exception types - thanks&lt;/p&gt;</comment>
                    <comment id="26146" author="stuart.sierra" created="Thu, 20 Jan 2011 07:59:35 -0600"  >&lt;p&gt;keys-vals-type-2.patch replaces previous. Tests check for Exception instead of IllegalArgumentException&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="10083" name="keys-vals-type-1.patch" size="2433" author="stuart.sierra" created="Tue, 18 Jan 2011 21:33:06 -0600" />
                    <attachment id="10084" name="keys-vals-type-2.patch" size="2403" author="stuart.sierra" created="Thu, 20 Jan 2011 07:59:35 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[CLJ-698] class accessible from deftype method bodies is not suitable for instance?, ...</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-698</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Example interaction: &lt;a href=&quot;http://pastebin.com/cTdUCKfp&quot;&gt;http://pastebin.com/cTdUCKfp&lt;/a&gt;&lt;br/&gt;
Which directly contradicts documentation for deftype&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;In the method bodies, the (unqualified) name can be used to name the class (for calls to new, instance? etc).&lt;/p&gt;&lt;/blockquote&gt;</description>
                <environment></environment>
            <key id="14307">CLJ-698</key>
            <summary>class accessible from deftype method bodies is not suitable for instance?, ...</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</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="bendlas">Herwig Hochleitner</reporter>
                        <labels>
                    </labels>
                <created>Tue, 28 Dec 2010 09:38:07 -0600</created>
                <updated>Wed, 29 Dec 2010 12:45:45 -0600</updated>
                                    <version>Release 1.2</version>
                                <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="26067" author="stu" created="Wed, 29 Dec 2010 12:45:45 -0600"  >&lt;p&gt;The problem occurs in 1.2 but is fixed on master. Leaving in backlog in case we ever cut another 1.2 release--if not, then mark as fixed.&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>

<item>
            <title>[CLJ-466] Reflection incorrectly avoids &quot;More than one matching method&quot; exceptions</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-466</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;From &lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/ae77d7730415d22c&quot;&gt;the google group&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;The following correctly throws an IllegalArgumentException &quot;More than one matching method&quot; due to the nil resulting in ambiguity between two overloaded version of append.&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(let [sb (StringBuilder.)]
  (.append sb nil))&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;And yet the following, which uses reflection, works:
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;(def s nil)
(let [sb (StringBuilder.)]
  (.append sb s))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;This is due to a divergence in method resolution between direct and reflected calls.  Both examples should result in an exception due to ambiguity.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13863">CLJ-466</key>
            <summary>Reflection incorrectly avoids &quot;More than one matching method&quot; exceptions</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="3">Duplicate</resolution>
                                <assignee username="richhickey">Rich Hickey</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 27 Oct 2010 15:00:00 -0500</created>
                <updated>Mon, 15 Nov 2010 12:49:00 -0600</updated>
                    <resolved>Fri, 29 Oct 2010 15:38:05 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24319" author="importer" created="Wed, 27 Oct 2010 15:14:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/466&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/466&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24320" author="importer" created="Wed, 27 Oct 2010 15:14:00 -0500"  >&lt;p&gt;ataggart said: Simpler example of the problem.&lt;/p&gt;</comment>
                    <comment id="24321" author="importer" created="Wed, 27 Oct 2010 15:14:00 -0500"  >&lt;p&gt;ataggart said: Fixed via patch at ticket #445.&lt;/p&gt;</comment>
                    <comment id="25900" author="stu" created="Fri, 29 Oct 2010 15:38:05 -0500"  >&lt;p&gt;See #445&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>

<item>
            <title>[CLJ-464] RFE: Run FindBugs on Clojure source code</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-464</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;I ran FindBugs (&lt;a href=&quot;http://www.example.com&quot;&gt;http://findbugs.sourceforge.net/ExampleName&lt;/a&gt;) on a small Clojure program that I am writing and got multiple warnings on code from the clojure libraries.&lt;/p&gt;

&lt;p&gt;It might be helpful to run this on the source code base. It might uncover some actual bugs &lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/smile.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13861">CLJ-464</key>
            <summary>RFE: Run FindBugs on Clojure source code</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 22 Oct 2010 04:56:00 -0500</created>
                <updated>Fri, 7 Oct 2011 07:33:23 -0500</updated>
                    <resolved>Fri, 7 Oct 2011 07:33:22 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24317" author="importer" created="Fri, 22 Oct 2010 04:56:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/464&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/464&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="26906" author="richhickey" created="Fri, 7 Oct 2011 07:33:12 -0500"  >&lt;p&gt;It has been run. Unfortunately, it has reports numerous spurious errors (i.e. non-problems), so will never be clean.&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>

<item>
            <title>[CLJ-463] Strip leading colons when creating keywords from single strings</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-463</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;This seems unfortunate:&lt;/p&gt;

&lt;p&gt;=&amp;gt; (-&amp;gt; :foo str keyword)&lt;br/&gt;
::foo&lt;/p&gt;

&lt;p&gt;Symbols are far saner in this regard:&lt;/p&gt;

&lt;p&gt;=&amp;gt; (-&amp;gt; &apos;foo str symbol)&lt;br/&gt;
foo&lt;/p&gt;

&lt;p&gt;Simply stripping leading colons from strings prior to turning them into keywords should suffice. The 2-arity Keyword.intern method and clojure.core/keyword fn should be left intact, so as to provide an escape hatch for those that really do need colon-prefixed keywords.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13860">CLJ-463</key>
            <summary>Strip leading colons when creating keywords from single strings</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="cemerick">Chas Emerick</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 20 Oct 2010 04:41:00 -0500</created>
                <updated>Fri, 19 Nov 2010 10:07:07 -0600</updated>
                    <resolved>Fri, 19 Nov 2010 10:07:06 -0600</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24315" author="importer" created="Wed, 20 Oct 2010 04:44:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/463&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/463&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
463-strip-keyword-colons.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bKmJCu2_Wr36meeJe5cbLA/download/bKmJCu2_Wr36meeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bKmJCu2_Wr36meeJe5cbLA/download/bKmJCu2_Wr36meeJe5cbLA&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24316" author="importer" created="Wed, 20 Oct 2010 04:44:00 -0500"  >&lt;p&gt;cemerick said: [&lt;a href=&quot;file:bKmJCu2_Wr36meeJe5cbLA&quot;&gt;file:bKmJCu2_Wr36meeJe5cbLA&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="25887" author="stu" created="Fri, 29 Oct 2010 10:00:11 -0500"  >&lt;p&gt;I am uncomfortable with this. If I say (keyword &quot;::foo&quot;), what am I asking for? I almost wonder if this should throw an exception.&lt;/p&gt;</comment>
                    <comment id="25888" author="richhickey" created="Fri, 29 Oct 2010 10:07:09 -0500"  >&lt;p&gt;I think (keyword &quot;::foo&quot;) (and any more leading colons) should fail, and this patch should only strip one colon.&lt;/p&gt;</comment>
                    <comment id="25894" author="cemerick" created="Fri, 29 Oct 2010 11:11:52 -0500"  >&lt;p&gt;Updated patch forthcoming.&lt;/p&gt;</comment>
                    <comment id="25947" author="cemerick" created="Fri, 19 Nov 2010 10:07:06 -0600"  >&lt;p&gt;After thinking about this for a while, I&apos;ve now reversed my position, and am in favor or retaining the current functionality.  Thanks for the pushback.&lt;/p&gt;

&lt;p&gt;As for throwing exceptions on colon-prefixed, un-namespaced keywords, I&apos;m not certain that that&apos;s a good idea.  People use keywords to hold all sorts of data, use them as map keys and lookup fns, etc.&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>

<item>
            <title>[CLJ-461] require namespace implicitly</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-461</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Referencing a function with a fully-qualified namespace should work without first using require or use, similar to how a fully-qualified java class can be used without importing it.&lt;/p&gt;

&lt;p&gt;It&apos;s a small change in Compiler that tries to call (require x) if the fully qualified classname is not found.  This should give priority to the java class, which protects backwards compatibility.  There is no runtime performance impact, only compile time (the first time the namespace is seen).  The fact that code (the namespace) is loaded during compilation of a form is no different than loading code to look up a java class.&lt;/p&gt;

&lt;p&gt;This makes it easier to write quick scripts as in the example below, also to use one-liners in the repl or ad hoc in code.&lt;/p&gt;

&lt;p&gt;For example: java -cp src/clj/:classes clojure.main -e &quot;(clojure.set/union #{1} #{2})&quot;&lt;br/&gt;
&lt;br/&gt;
Currently on master, this produces: Exception in thread &quot;main&quot; java.lang.ClassNotFoundException: clojure.set&lt;br/&gt;
but this works: java -cp src/clj/:classes clojure.main -e &quot;(require &apos;clojure.set) (clojure.set/union #{1} #{2})&quot;&lt;/p&gt;

&lt;p&gt;Obviously, (use) would make the code shorter, but my goal is to make it implicit.&lt;/p&gt;

&lt;p&gt;Discussion: &lt;a href=&quot;http://groups.google.com/group/clojure-dev/t/69823ce63dd94a0c&quot;&gt;http://groups.google.com/group/clojure-dev/t/69823ce63dd94a0c&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13858">CLJ-461</key>
            <summary>require namespace implicitly</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="1" iconUrl="http://dev.clojure.org/jira/images/icons/priority_blocker.gif">Blocker</priority>
                    <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="mikehinchey">Mike Hinchey</assignee>
                                <reporter username="mikehinchey">Mike Hinchey</reporter>
                        <labels>
                    </labels>
                <created>Sat, 16 Oct 2010 02:41:00 -0500</created>
                <updated>Tue, 21 Jun 2011 18:41:38 -0500</updated>
                    <resolved>Tue, 21 Jun 2011 18:41:38 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>1</votes>
                        <watches>2</watches>
                        <comments>
                    <comment id="24311" author="importer" created="Sun, 17 Oct 2010 21:37:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/461&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/461&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
mh-461-require.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cQSfQ22L8r37zxeJe5cbCb/download/cQSfQ22L8r37zxeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cQSfQ22L8r37zxeJe5cbCb/download/cQSfQ22L8r37zxeJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24312" author="importer" created="Sun, 17 Oct 2010 21:37:00 -0500"  >&lt;p&gt;mikehinchey said: [&lt;a href=&quot;file:cQSfQ22L8r37zxeJe5cbCb&quot;&gt;file:cQSfQ22L8r37zxeJe5cbCb&lt;/a&gt;]: patch to fix #461&lt;/p&gt;</comment>
                    <comment id="24313" author="importer" created="Sun, 17 Oct 2010 21:37:00 -0500"  >&lt;p&gt;mikehinchey said: The discussion shows some people want this, other&apos;s aren&apos;t sure.  Attached the patch so people can try it out.&lt;/p&gt;</comment>
                    <comment id="26025" author="stuart.sierra" created="Sun, 12 Dec 2010 16:06:47 -0600"  >&lt;p&gt;One problem I see: With this change, it becomes harder for code-reading tools to determine all the dependencies of a namespace without evaluating it. Right now, I can &lt;a href=&quot;https://github.com/stuartsierra/lazytest/blob/86a75572e81625b09f9ed15981fb9efd670e00a9/modules/lazytest/src/main/clojure/lazytest/nsdeps.clj&quot;&gt;parse the &quot;ns&quot; declaration&lt;/a&gt; of any file and know its dependencies. (Obviously, this breaks if the file loads code outside of the &quot;ns&quot; declaration, but then static analysis is virtually impossible.) &lt;/p&gt;

&lt;p&gt;With this change, the &quot;ns&quot; declaration no longer represents the complete set of dependencies for the namespace. I can try to read the whole file, but I have no way of knowing if &quot;foo.bar.baz/quux&quot; represents a namespace-qualified symbol or a static Java member, unless I evaluate it.&lt;/p&gt;

&lt;p&gt;I think loading Java classes and loading Clojure namespaces are fundamentally different operations because classes, unlike namespaces, cannot change after they are loaded.&lt;/p&gt;</comment>
                    <comment id="26500" author="pjstadig" created="Fri, 10 Jun 2011 14:01:27 -0500"  >&lt;p&gt;Stuart,&lt;br/&gt;
On the first point: it is already hard for code-reading tools.  One can (require &apos;something) outside of the ns form.  There are also uses of eval, direct references to fully qualified classes, and other nefarious ways.  You seem to have admitted this already, so I&apos;m not quite sure what you are objecting to?  Objection 1: OVERRULED.&lt;/p&gt;

&lt;p&gt;On the second point: you already admitted above that the ns declaration doesn&apos;t represent the complete set of dependencies, so there is no &quot;no longer&quot; about it.  It was just never the case.  Secondly, &quot;foo.bar.baz/quux&quot; could be a static Java member, or a Clojure Var, but that is irrelevant to this patch.  That was always the case, and the patch is about autoloading, not about interpreting to what &quot;foo.bar.baz/quux&quot; is referring.  Objection 2: OVERRULED.&lt;/p&gt;

&lt;p&gt;On the third point: again, I don&apos;t see the relevance of the fact that a namespace can be changed after it has been loaded but a class cannot.  Again, the patch is about autoloading, and the immutability/mutability of namespaces vs. classes is orthogonal.  Objection 3: OVERRULED.&lt;/p&gt;

&lt;p&gt;Finally, the original ML thread that spawned this had a +1 from the following persons: myself, Christophe Grand, Phil Hagelberg, Laurent Petit, Steve Gilardi, Cosmin Stejerean, and Chas Emerick.&lt;/p&gt;

&lt;p&gt;It had a -1 only from: you, Dimitry Gashinsky.&lt;/p&gt;

&lt;p&gt;A negative comment from Stu Halloway, and a positive-ish comment from Chris Houser.&lt;/p&gt;

&lt;p&gt;I say we move forward with this.&lt;/p&gt;</comment>
                    <comment id="26501" author="hiredman" created="Fri, 10 Jun 2011 14:07:21 -0500"  >&lt;p&gt;I have serious reservations about the complexity this will add to the compiler. the current patch is no good, it will break for aot compilation.&lt;/p&gt;</comment>
                    <comment id="26502" author="pjstadig" created="Fri, 10 Jun 2011 14:21:52 -0500"  >&lt;p&gt;So I&apos;ve been told that my tongue-in-cheek may not have translated well, but that was the intent.  I apologize if that was the case.&lt;/p&gt;

&lt;p&gt;My point is just to draw attention to this ticket again.  It was discussed on the ML with several +1&apos;s and has been mentioned again in chat.  I don&apos;t think any of the objections that Stuart Sierra raised are particularly relevant to the question of autoloading the namespace of a fully qualified var.&lt;/p&gt;

&lt;p&gt;Has anyone tried the patch?  Kevin Downey seems to think it will not work in the context of AOT.&lt;/p&gt;

&lt;p&gt;Do we need a new patch?&lt;/p&gt;</comment>
                    <comment id="26503" author="hiredman" created="Fri, 10 Jun 2011 14:27:08 -0500"  >&lt;p&gt;the patch doesn&apos;t actually cause code to load the required namespaces to be generated. it only loads the required namespaces during compilation, which is why it breaks aot. once you get into code generation for aot it gets complicated, where does the generated code go? do we want to try and emit it separately like the requires from an ns form or does it get emitted in the middle of the particular function being compiled. I think the first approach is desirable from a stand point of correctness, but carries with it a load of complexity.&lt;/p&gt;</comment>
                    <comment id="26504" author="pjstadig" created="Fri, 10 Jun 2011 15:00:24 -0500"  >&lt;p&gt;I think it gets emitted in the middle of a function, just like would happen now if you do (require &apos;clojure.set) (clojure.set/union ...)&lt;/p&gt;

&lt;p&gt;Is there a benefit to having it emit separately like an ns form?  Isn&apos;t the ns form just a macro that turns into calls to (require ...) which happen to be at the top of a file because that&apos;s where the ns form is?&lt;/p&gt;</comment>
                    <comment id="26529" author="richhickey" created="Tue, 21 Jun 2011 18:41:24 -0500"  >&lt;p&gt;This is not a good idea, for many reasons, the simplest of which is: it makes loading a side effect of calling a function in a module. Since loading can have arbitrary effects, it shouldn&apos;t be implicit. This isn&apos;t warranted by the meager benefits it might provide.&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="10008">Not Approved</customfieldvalue>

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

<item>
            <title>[CLJ-459] RFE: modify description of &quot;assoc&quot;</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-459</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;The documentation for &quot;assoc&quot; in clojure.core should probably &lt;br/&gt;
include&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(assoc vector index val)
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
and

&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;(assoc vector index val &amp;amp; ivs)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;in the usage line.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13856">CLJ-459</key>
            <summary>RFE: modify description of &quot;assoc&quot;</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>Thu, 14 Oct 2010 16:55:00 -0500</created>
                <updated>Thu, 14 Oct 2010 16:55:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24307" author="importer" created="Thu, 14 Oct 2010 16:55:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/459&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/459&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>

<item>
            <title>[CLJ-455] Calculating large numbers results in java.math.BigIntegerArithmeticException</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-455</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;(class (* 1000 1000 1000 1000 1000 1000 1000))&lt;br/&gt;
1.1 returns : java.math.BigInteger&lt;br/&gt;
1.3.0-alpha returns : java.math.BigIntegerArithmeticException integer overflow  clojure.lang.Numbers.throwIntOverflow (Numbers.java:1575)&lt;/p&gt;</description>
                <environment></environment>
            <key id="13852">CLJ-455</key>
            <summary>Calculating large numbers results in java.math.BigIntegerArithmeticException</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 8 Oct 2010 21:36:00 -0500</created>
                <updated>Sat, 23 Oct 2010 22:52:00 -0500</updated>
                    <resolved>Sat, 23 Oct 2010 22:52:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24298" author="importer" created="Sat, 23 Oct 2010 22:52:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/455&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/455&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24299" author="importer" created="Sat, 23 Oct 2010 22:52:00 -0500"  >&lt;p&gt;ataggart said: This is correct behavior with respect to 1.3.0 (yes, it&apos;s a breaking change). &lt;/p&gt;

&lt;p&gt;If one wants to allow numbers larger than what fits in a long to flow out of math ops, one needs to explicitly start with a BigInt:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;user=&amp;gt; (type 1N)
clojure.lang.BigInt
user=&amp;gt; (class (* 1000N 1000N 1000N 1000N 1000N 1000N 1000N))
clojure.lang.BigInt&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
If one wants to allow autopromotion, one can use the &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;code-quote&quot;&gt;&quot;tick&quot;&lt;/span&gt; math ops:
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;user=&amp;gt; (class (*&apos; 1000 1000 1000 1000 1000 1000 1000))
clojure.lang.BigInt&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;NB: Rich suspects almost no one should need these ops, and if you think you do, you&apos;re probably wrong.&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>

<item>
            <title>[CLJ-451] fn literals lack name/arglists/namespace metadata</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-451</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;I would expect (meta (fn not-so-anonymous &lt;span class=&quot;error&quot;&gt;&amp;#91;a b c&amp;#93;&lt;/span&gt;)) to include {:name not-so-anonymous :arglists (&lt;span class=&quot;error&quot;&gt;&amp;#91;a b c&amp;#93;&lt;/span&gt;)} alongside line number information and possibly namespace/file as well, but currently it only includes :line.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13848">CLJ-451</key>
            <summary>fn literals lack name/arglists/namespace metadata</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>Tue, 5 Oct 2010 00:29:00 -0500</created>
                <updated>Tue, 5 Oct 2010 00:29:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>1</votes>
                        <watches>3</watches>
                        <comments>
                    <comment id="24285" author="importer" created="Tue, 5 Oct 2010 00:29:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/451&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/451&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>

<item>
            <title>[CLJ-450] Add default predicate argument to filter, every?, take-while</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-450</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Some seq processing functions that take predicates could be improved by the addition of a default value of identity for the predicate argument.&lt;/p&gt;

&lt;p&gt;This has been discussed on the mailing list, and people seem favorable:&lt;br/&gt;
&lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/600559b7ee261908/3bc5d144ac54854e?lnk=gst&amp;amp;q=filter+identity#3bc5d144ac54854e&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/600559b7ee261908/3bc5d144ac54854e?lnk=gst&amp;amp;q=filter+identity#3bc5d144ac54854e&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;http://groups.google.com/group/clojure-dev/browse_thread/thread/0a9b5750dd7ec4ca&quot;&gt;http://groups.google.com/group/clojure-dev/browse_thread/thread/0a9b5750dd7ec4ca&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I can put together a patch.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13847">CLJ-450</key>
            <summary>Add default predicate argument to filter, every?, take-while</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>Fri, 1 Oct 2010 16:39:00 -0500</created>
                <updated>Fri, 27 Apr 2012 11:38:28 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>2</watches>
                        <comments>
                    <comment id="24284" author="importer" created="Fri, 1 Oct 2010 16:39:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/450&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/450&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="27938" author="jorendorff" created="Tue, 13 Mar 2012 14:51:07 -0500"  >&lt;p&gt;I independently wanted this. Here&apos;s a patch for: some, not-any?, every?, not-every?. If this is roughly what&apos;s wanted I&apos;ll be happy to add filter, remove, take-while, drop-while.&lt;/p&gt;</comment>
                    <comment id="27939" author="jorendorff" created="Tue, 13 Mar 2012 16:57:27 -0500"  >&lt;p&gt;Note that there are a few cases of (every? identity ...) and (some identity ...) in core.clj itself; the patch removes &quot;identity&quot; from those.&lt;/p&gt;</comment>
                    <comment id="28289" author="jafingerhut" created="Thu, 26 Apr 2012 19:51:32 -0500"  >&lt;p&gt;clj-450-add-default-pred-arg-to-core-fns-patch.txt dated Apr 26 2012 is identical to Jason Orendorff&apos;s, except it is in git format.  Jason is not on the list of Clojure contributors as of today.  I have sent him an email asking if he has done so, or is planning to.&lt;/p&gt;</comment>
                    <comment id="28292" author="jorendorff" created="Fri, 27 Apr 2012 10:35:00 -0500"  >&lt;p&gt;Of course I&apos;d be happy to send in a contributor agreement. ...Is there actually any interest in taking this patch or something like it?&lt;/p&gt;</comment>
                    <comment id="28294" author="jafingerhut" created="Fri, 27 Apr 2012 11:38:28 -0500"  >&lt;p&gt;I don&apos;t know if there is any interest in taking this patch.  Perhaps a Clojure screener will take a look at it and comment, but I am not a screener and can&apos;t promise anything.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11115" name="clj-450-add-default-pred-arg-to-core-fns-patch.txt" size="9598" author="jafingerhut" created="Thu, 26 Apr 2012 19:51:32 -0500" />
                    <attachment id="10991" name="clojure-default-every-argument-v1.patch" size="9139" author="jorendorff" created="Tue, 13 Mar 2012 14:51:07 -0500" />
                </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>

<item>
            <title>[CLJ-449] NullPointerException in clojure.stacktrace</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-449</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;See &lt;a href=&quot;http://groups.google.com/group/clojure-dev/browse_thread/thread/f4157c68df730bd9&quot;&gt;http://groups.google.com/group/clojure-dev/browse_thread/thread/f4157c68df730bd9&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;clojure.stacktrace/print-trace-element tries to match StackTraceElement.getClass against a regex.&lt;/li&gt;
	&lt;li&gt;StackTraceElement.getClass returns null, so a NullPointerException gets thrown, totally obscuring the original exception.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Now, the null is supposedly impossible, according to the Javadocs for StackTraceElement.  But in some rare cases it seems to happen.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13846">CLJ-449</key>
            <summary>NullPointerException in clojure.stacktrace</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="1" iconUrl="http://dev.clojure.org/jira/images/icons/priority_blocker.gif">Blocker</priority>
                    <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stuart.sierra">Stuart Sierra</assignee>
                                <reporter username="stuart.sierra">Stuart Sierra</reporter>
                        <labels>
                    </labels>
                <created>Fri, 1 Oct 2010 14:05:00 -0500</created>
                <updated>Fri, 5 Nov 2010 11:05:12 -0500</updated>
                    <resolved>Fri, 5 Nov 2010 11:05:12 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24282" author="importer" created="Fri, 1 Oct 2010 14:08:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/449&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/449&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
fix-stacktrace2.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/c_8vnCZyyr37CfeJe5cbLA/download/c_8vnCZyyr37CfeJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/c_8vnCZyyr37CfeJe5cbLA/download/c_8vnCZyyr37CfeJe5cbLA&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24283" author="importer" created="Fri, 1 Oct 2010 14:08:00 -0500"  >&lt;p&gt;stuart.sierra said: [&lt;a href=&quot;file:c_8vnCZyyr37CfeJe5cbLA&quot;&gt;file:c_8vnCZyyr37CfeJe5cbLA&lt;/a&gt;]: patch with ticket ref #&lt;/p&gt;</comment>
                    <comment id="25886" author="stu" created="Fri, 29 Oct 2010 09:53:07 -0500"  >&lt;p&gt;This may be moot given the work being done to unify all the different stacktraces, but as long as this code is still out there, it seems worth preventing occasional cryptic failures!&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="10007">Ok</customfieldvalue>

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

<item>
            <title>[CLJ-446] 1.3 alpha1 gives reflection warning in a case where 1.2 does not</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-446</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Feel free to reclassify this as something other than a bug if I&apos;ve misclassified it.&lt;/p&gt;

&lt;p&gt;Related Clojure Google group conversation: &lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/83c08f6c2f313c50#&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/83c08f6c2f313c50#&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When doing AOT compilation on the attached program nbody.clj with 1.2:&lt;/p&gt;

&lt;p&gt;java -Dclojure.compile.path=. -cp clojure-1.2.0.jar:. clojure.lang.Compile nbody&lt;/p&gt;

&lt;p&gt;there are no reflection warnings, and a more complex version of the program using the type Body runs quickly.  When doing AOT compilation with 1.3 alpha1:&lt;/p&gt;

&lt;p&gt;java -Dclojure.compile.path=. -cp clojure-1.3.0-alpha1.jar:. clojure.lang.Compile nbody&lt;/p&gt;

&lt;p&gt;I see these reflection warnings, and a more complex version of the program using the type Body runs significantly more slowly, most likely due to the reflection warned about:&lt;/p&gt;

&lt;p&gt;Reflection warning, nbody.clj:18 - reference to field x can&apos;t be resolved.&lt;br/&gt;
Reflection warning, nbody.clj:19 - reference to field y can&apos;t be resolved.&lt;/p&gt;

&lt;p&gt;Changing the name of the file to nbod.clj and the first line to &quot;(ns nbod&quot;, and making corresponding changes to the compilation commands above, causes the reflection warnings to go away in 1.3 alpha1.&lt;/p&gt;

&lt;p&gt;Similarly, taking the original attached file nbody.clj and replacing the three occurrences of &quot;nbody&quot; that are not the namespace name with a different name like &quot;nbod&quot; (or probably any name other than &quot;nbody&quot;) also causes the reflection warnings to go away in 1.3 alpha1.&lt;/p&gt;

&lt;p&gt;In case it makes any difference, I was using Clojure jars pulled via Leiningen, and HotSpot 1.6.0_xxx JVMs on Mac OS X 10.5.8 and Ubuntu 10.4.&lt;/p&gt;

&lt;p&gt;Admittedly, a change with very limited impact on typical Clojure users.  I wanted to file a ticket in case this was an unwanted consequence of some desirable change in 1.3.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13843">CLJ-446</key>
            <summary>1.3 alpha1 gives reflection warning in a case where 1.2 does not</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="stuart.sierra">Stuart Sierra</reporter>
                        <labels>
                    </labels>
                <created>Wed, 29 Sep 2010 02:37:00 -0500</created>
                <updated>Fri, 9 Dec 2011 15:20:10 -0600</updated>
                    <resolved>Fri, 9 Dec 2011 15:20:10 -0600</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="24258" author="importer" created="Sun, 3 Oct 2010 01:32:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/446&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/446&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
nbody.clj - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/auzfxEY2Or35j2eJe5cbCb/download/auzfxEY2Or35j2eJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/auzfxEY2Or35j2eJe5cbCb/download/auzfxEY2Or35j2eJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24259" author="importer" created="Sun, 3 Oct 2010 01:32:00 -0500"  >&lt;p&gt;ataggart said: Fix available via #445.&lt;/p&gt;</comment>
                    <comment id="27446" author="stuart.sierra" created="Fri, 9 Dec 2011 15:19:52 -0600"  >&lt;p&gt;Marking &quot;Incomplete&quot; because no patch is included.&lt;/p&gt;

&lt;p&gt;Furthermore, I cannot reproduce the problem described using Clojure 1.3.0.&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="10006">Incomplete</customfieldvalue>

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

<item>
            <title>[CLJ-440] java method calls cannot omit varargs</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-440</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;From &lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/7d0d6cb32656a621&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/7d0d6cb32656a621&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E.g., trying to call java.util.Collections.addAll(Collection c, T... elements)&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;user=&amp;gt; (Collections/addAll [] (object-array 0))
&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;
user=&amp;gt; (Collections/addAll [])
IllegalArgumentException No matching method: addAll  clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;$StaticMethodExpr.&amp;lt;init&amp;gt; (&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:1401)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The Method class provides an isVarArg() method, which could be used to inform the compiler to process things differently.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13837">CLJ-440</key>
            <summary>java method calls cannot omit varargs</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>Mon, 27 Sep 2010 20:19:00 -0500</created>
                <updated>Mon, 29 Oct 2012 10:56:32 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>5</votes>
                        <watches>6</watches>
                        <comments>
                    <comment id="24237" author="importer" created="Mon, 27 Sep 2010 20:19:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/440&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/440&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="26340" author="ataggart" created="Fri, 1 Apr 2011 23:16:23 -0500"  >&lt;p&gt;Patch adds support for varargs.  Builds on top of patch in &lt;a href=&quot;http://dev.clojure.org/jira/browse/CLJ-445&quot; title=&quot;Method/Constructor resolution does not factor in widening conversion of primitive args&quot;&gt;CLJ-445&lt;/a&gt;.&lt;/p&gt;</comment>
                    <comment id="26344" author="ataggart" created="Tue, 5 Apr 2011 17:45:41 -0500"  >&lt;p&gt;Patch updated to current &lt;a href=&quot;http://dev.clojure.org/jira/browse/CLJ-445&quot; title=&quot;Method/Constructor resolution does not factor in widening conversion of primitive args&quot;&gt;CLJ-445&lt;/a&gt; patch.&lt;/p&gt;</comment>
                    <comment id="29866" author="klauern" created="Mon, 29 Oct 2012 08:12:35 -0500"  >&lt;p&gt;Is this ticket on hold?  I find myself typing &lt;tt&gt;(.someCall arg1 arg2 (into-array SomeType nil))&lt;/tt&gt; alot just to get the right method to be called. This ticket sounds like it would address that extraneous &lt;tt&gt;into-array&lt;/tt&gt; arg that I use alot.&lt;/p&gt;</comment>
                    <comment id="29868" author="jafingerhut" created="Mon, 29 Oct 2012 10:45:47 -0500"  >&lt;p&gt;fixbug445.diff uploaded on Oct 29 2012 was written Oct 23 2010 by Alexander Taggart.  I am simply copying it from the old Assembla ticket tracking system to here to make it more easily accessible.  Not surprisingy, it doesn&apos;t apply cleanly to latest master.  I don&apos;t know how much effort it would be to update it, but only a few hunks do not apply cleanly according to &apos;patch&apos;.  See the &quot;Updating stale patches&quot; section on the JIRA workflow page here: &lt;a href=&quot;http://dev.clojure.org/display/design/JIRA+workflow&quot;&gt;http://dev.clojure.org/display/design/JIRA+workflow&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="29869" author="jafingerhut" created="Mon, 29 Oct 2012 10:56:32 -0500"  >&lt;p&gt;Ugh.  Deleted the attachment because it was for &lt;a href=&quot;http://dev.clojure.org/jira/browse/CLJ-445&quot; title=&quot;Method/Constructor resolution does not factor in widening conversion of primitive args&quot;&gt;CLJ-445&lt;/a&gt;, or at least it was named that way.  &lt;a href=&quot;http://dev.clojure.org/jira/browse/CLJ-445&quot; title=&quot;Method/Constructor resolution does not factor in widening conversion of primitive args&quot;&gt;CLJ-445&lt;/a&gt; definitely has a long comment history, so if one or more of its patches address this issue, then you can read the discussion there to see the history.&lt;/p&gt;

&lt;p&gt;I don&apos;t know of any &quot;on hold&quot; status for tickets, except for one or two where Rich Hickey has explicitly said in a comment that he wants to wait a while before making the change.  There are just tickets that contributors choose to work on and ones that screeners choose to screen.&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>

<item>
            <title>[CLJ-438] case* and code walkers</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-438</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Clojure 1.2.0-master-SNAPSHOT&lt;br/&gt;
user=&amp;gt; (use &apos;clojure.walk)&lt;br/&gt;
nil&lt;br/&gt;
user=&amp;gt; (eval (macroexpand-all &apos;(case 1 1 :test)))&lt;br/&gt;
java.lang.ClassCastException: clojure.lang.PersistentVector cannot be cast to clojure.lang.MapEntry (NO_SOURCE_FILE:2)&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (macroexpand-all &apos;(case 1 1 :test))&lt;br/&gt;
(let* &lt;span class=&quot;error&quot;&gt;&amp;#91;G__9 1&amp;#93;&lt;/span&gt;&lt;br/&gt;
(case*  G__9  0  1  1  1&lt;br/&gt;
  (throw   (new  java.lang.IllegalArgumentException  (clojure.core/str &quot;No matching clause: &quot; G__9)))&lt;/p&gt;
  {1 [1 :test]}
&lt;p&gt;  false))&lt;/p&gt;

&lt;p&gt;The existing code walkers convert the embedded &lt;span class=&quot;error&quot;&gt;&amp;#91;1 :test&amp;#93;&lt;/span&gt; into a PersistentVector that the compiler doesn&apos;t accept.&lt;br/&gt;
(symbol-macrolet &lt;span class=&quot;error&quot;&gt;&amp;#91;x :test&amp;#93;&lt;/span&gt; (case 1 1 x)) fails in the same way.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13835">CLJ-438</key>
            <summary>case* and code walkers</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="1" iconUrl="http://dev.clojure.org/jira/images/icons/priority_blocker.gif">Blocker</priority>
                    <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="importer">Assembla Importer</reporter>
                        <labels>
                    </labels>
                <created>Thu, 23 Sep 2010 13:06:00 -0500</created>
                <updated>Fri, 13 Apr 2012 08:03:18 -0500</updated>
                    <resolved>Fri, 13 Apr 2012 08:03:18 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>1</votes>
                        <watches>2</watches>
                        <comments>
                    <comment id="24234" author="importer" created="Fri, 1 Oct 2010 10:47:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/438&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/438&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="26077" author="trptcolin" created="Sat, 1 Jan 2011 16:13:12 -0600"  >&lt;p&gt;A post-order traversal for macroexpand-all seems more reliable here than pre-order, and does fix the issue.&lt;/p&gt;

&lt;p&gt;The attached patch adds tests around this and updates macroexpand-all to use postwalk rather than prewalk. &lt;/p&gt;</comment>
                    <comment id="26249" author="ataggart" created="Mon, 28 Feb 2011 13:51:10 -0600"  >&lt;p&gt;This has been fixed in the patch on &lt;a href=&quot;http://dev.clojure.org/jira/browse/CLJ-426&quot; title=&quot;case should handle hash collision&quot;&gt;&lt;del&gt;CLJ-426&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The CaseExpr parser now just treats the map value as a tuple by calling RT.first/second, rather than casting it to a MapEntry.&lt;/p&gt;</comment>
                    <comment id="26920" author="trptcolin" created="Mon, 10 Oct 2011 09:28:35 -0500"  >&lt;p&gt;Confirming Alex&apos;s fix - this ticket can just get closed, I think.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="10065" name="0001-Fix-error-case-in-eval-of-walk-macroexpand-all-outpu.patch" size="1571" author="trptcolin" created="Sat, 1 Jan 2011 16:13:12 -0600" />
                </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>

<item>
            <title>[CLJ-436] Bug in clojure.contrib.json/read-json</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-436</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;&lt;b&gt;What (small set of) steps will reproduce the problem?&lt;/b&gt;&lt;br/&gt;
$ java -cp lib/clojure-1.2.0.jar:lib/clojure-contrib-1.2.0.jar clojure.main&lt;br/&gt;
Clojure 1.2.0&lt;br/&gt;
user=&amp;gt; (require &apos;clojure.contrib.json)&lt;br/&gt;
nil&lt;br/&gt;
user=&amp;gt; (clojure.contrib.json/read-json &quot;&quot;)&lt;br/&gt;
java.lang.IllegalArgumentException: Value out of range for char: -1 (NO_SOURCE_FILE:0)&lt;br/&gt;
user=&amp;gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;What is the expected output? What do you see instead?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Expected:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(&lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; eof-error?
  (&lt;span class=&quot;code-keyword&quot;&gt;throw&lt;/span&gt; (EOFException. &lt;span class=&quot;code-quote&quot;&gt;&quot;JSON error (end-of-file)&quot;&lt;/span&gt;))
  eof-value)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;b&gt;What version are you using?&lt;/b&gt;&lt;br/&gt;
1.2&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Was this discussed on the group? If so, please provide a link to the discussion&lt;/b&gt;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;13:51&amp;#93;&lt;/span&gt; &amp;lt;&lt;em&gt;na_ka_na&lt;/em&gt;&amp;gt; Hey guys I think there&apos;s a bug in clojure.contrib.json at line 116&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;13:51&amp;#93;&lt;/span&gt; &amp;lt;&lt;em&gt;na_ka_na&lt;/em&gt;&amp;gt; in clojure 1.2&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;13:52&amp;#93;&lt;/span&gt; &amp;lt;&lt;em&gt;na_ka_na&lt;/em&gt;&amp;gt; it has a (char i) and then checks for (= i -1)  ... but (char -1) fails&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;13:52&amp;#93;&lt;/span&gt; &amp;lt;&lt;em&gt;na_ka_na&lt;/em&gt;&amp;gt; where can I report it ?&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;13:53&amp;#93;&lt;/span&gt; &amp;lt;LauJensen&amp;gt; &lt;em&gt;na_ka_na&lt;/em&gt;: assembla/support&lt;/p&gt;</description>
                <environment></environment>
            <key id="13833">CLJ-436</key>
            <summary>Bug in clojure.contrib.json/read-json</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 21 Sep 2010 13:14:00 -0500</created>
                <updated>Fri, 1 Oct 2010 15:32:00 -0500</updated>
                    <resolved>Fri, 1 Oct 2010 15:32:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24229" author="importer" created="Fri, 1 Oct 2010 15:32:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/436&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/436&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24230" author="importer" created="Fri, 1 Oct 2010 15:32:00 -0500"  >&lt;p&gt;donmullen said: Added ticket on &lt;a href=&quot;http://www.assembla.com/spaces/clojure-contrib/tickets/99-bug-in-clojure-contrib-json-read-json&quot;&gt;clojure-contrib-99&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>

<item>
            <title>[CLJ-434] Additional copy methods for URLs in clojure.java.io</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-434</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;The copy method in clojure.java.io doesn&apos;t handle java.net.URL as input.&lt;br/&gt;
The necessary methods can be found in the mailing list post:&lt;br/&gt;
[&lt;span class=&quot;error&quot;&gt;&amp;#91;url:http://groups.google.com/group/clojure/browse_thread/thread/24a105b12466a8e8&amp;#93;&lt;/span&gt;]&lt;/p&gt;</description>
                <environment></environment>
            <key id="13831">CLJ-434</key>
            <summary>Additional copy methods for URLs in clojure.java.io</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>Fri, 10 Sep 2010 07:32:00 -0500</created>
                <updated>Fri, 10 Sep 2010 07:32:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="24226" author="importer" created="Fri, 10 Sep 2010 07:32:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/434&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/434&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>

<item>
            <title>[CLJ-431] with-junit-output should use with-test-out when writing header and testsuites tags</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-431</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Need to be able to use &amp;#42;test-out&amp;#42; and &amp;#42;out&amp;#42; independently within with-junit-output in order to be able to XML escape general test output while leaving report output (XML) alone.&lt;/p&gt;

&lt;p&gt;with-junit-output currently precludes this because it doesn&apos;t use with-test-out when writing the header and testsuites tags.  It assumes it will always be wrapped with with-test-out but this permenantly merges &amp;#42;test-out&amp;#42; and  &amp;#42;out&amp;#42;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13828">CLJ-431</key>
            <summary>with-junit-output should use with-test-out when writing header and testsuites tags</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="stuart.sierra">Stuart Sierra</assignee>
                                <reporter username="importer">Assembla Importer</reporter>
                        <labels>
                    </labels>
                <created>Tue, 7 Sep 2010 10:57:00 -0500</created>
                <updated>Fri, 5 Nov 2010 11:05:12 -0500</updated>
                    <resolved>Fri, 5 Nov 2010 11:05:12 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24222" author="importer" created="Fri, 1 Oct 2010 15:19:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/431&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/431&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
fix431-1.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/a04XQYZzKr36OdeJe5cbCb/download/a04XQYZzKr36OdeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/a04XQYZzKr36OdeJe5cbCb/download/a04XQYZzKr36OdeJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24223" author="importer" created="Fri, 1 Oct 2010 15:19:00 -0500"  >&lt;p&gt;stuart.sierra said: [&lt;a href=&quot;file:a04XQYZzKr36OdeJe5cbCb&quot;&gt;file:a04XQYZzKr36OdeJe5cbCb&lt;/a&gt;]: fix&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="10007">Ok</customfieldvalue>

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

<item>
            <title>[CLJ-424] instance? fails on deftype instance, when used from multiple files</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-424</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;When instance? is called from two separate namespaces to test an instance of a user defined type, one of them fails&lt;/p&gt;

&lt;p&gt;In the attached project, the following (identical) tests run correctly:&lt;/p&gt;

&lt;p&gt;lein test instance-test.test.core&lt;br/&gt;
lein test instance-test.test.core2&lt;/p&gt;

&lt;p&gt;but this fails:&lt;/p&gt;

&lt;p&gt;lein test &lt;/p&gt;



&lt;p&gt;For ease of reference, the attached project contains the following:&lt;/p&gt;

&lt;p&gt;(ns instance-test.core)&lt;br/&gt;
(deftype MyType &lt;span class=&quot;error&quot;&gt;&amp;#91;a&amp;#93;&lt;/span&gt;)&lt;br/&gt;
(defn make-my-type&lt;br/&gt;
  []&lt;br/&gt;
  (MyType. nil))&lt;/p&gt;


&lt;p&gt;(ns instance-test.test.core&lt;br/&gt;
  (:use &lt;span class=&quot;error&quot;&gt;&amp;#91;instance-test.core&amp;#93;&lt;/span&gt; :reload-all)&lt;br/&gt;
  (:use &lt;span class=&quot;error&quot;&gt;&amp;#91;clojure.test&amp;#93;&lt;/span&gt;)&lt;br/&gt;
  (:import instance-test.core.MyType))&lt;/p&gt;

&lt;p&gt;(deftest test1&lt;br/&gt;
  (is (instance? instance-test.core.MyType (make-my-type))))&lt;/p&gt;


&lt;p&gt;(ns instance-test.test.core2&lt;br/&gt;
  (:use &lt;span class=&quot;error&quot;&gt;&amp;#91;instance-test.core&amp;#93;&lt;/span&gt; :reload-all)&lt;br/&gt;
  (:use &lt;span class=&quot;error&quot;&gt;&amp;#91;clojure.test&amp;#93;&lt;/span&gt;)&lt;br/&gt;
  (:import instance-test.core.MyType))&lt;/p&gt;

&lt;p&gt;(deftest test1&lt;br/&gt;
  (is (instance? instance-test.core.MyType (make-my-type))))&lt;/p&gt;</description>
                <environment></environment>
            <key id="13821">CLJ-424</key>
            <summary>instance? fails on deftype instance, when used from multiple files</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="3">Duplicate</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 12 Aug 2010 07:36:00 -0500</created>
                <updated>Fri, 28 Jan 2011 15:43:25 -0600</updated>
                    <resolved>Fri, 28 Jan 2011 15:43:24 -0600</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24200" author="importer" created="Fri, 15 Oct 2010 06:13:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/424&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/424&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
instance-test.tar.gz - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dZGCvGPH4r37YjeJe5cbCb/download/dZGCvGPH4r37YjeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dZGCvGPH4r37YjeJe5cbCb/download/dZGCvGPH4r37YjeJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24201" author="importer" created="Fri, 15 Oct 2010 06:13:00 -0500"  >&lt;p&gt;hugoduncan said: Removing :reload-all from the tests, causes the unexpected behaviour to disappear&lt;/p&gt;</comment>
                    <comment id="26200" author="stuart.sierra" created="Fri, 28 Jan 2011 15:43:24 -0600"  >&lt;p&gt;I can confirm the described behavior with Clojure 1.2.0 and Leiningen 1.3.1.&lt;/p&gt;

&lt;p&gt;But it shouldn&apos;t work at all, because &quot;instance-test.core&quot; is not a valid Java package name.  This was fixed in &lt;a href=&quot;http://dev.clojure.org/jira/browse/CLJ-432&quot; title=&quot;deftype does not work if containing ns contains dashes&quot;&gt;&lt;del&gt;CLJ-432&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;With Clojure 1.3.0-alpha5, MyType&apos;s package name is correctly munged to &quot;instance_test.core&quot;. Loading the test namespaces fails (as it should) with java.lang.ClassNotFoundException: instance-test.core.MyType.&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>

<item>
            <title>[CLJ-419] LispReader uses Character.isWhitespace rather than Character.isSpaceChar</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-419</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Character.isWhitespace doesn&apos;t handle non-breaking space correctly. Apparently it&apos;s pretty ancient from The Olden Days Before People Knew How To Do Character Encodings.&lt;/p&gt;

&lt;p&gt;In Java 1.5 Character.isSpaceChar was added, which handles supplementary characters the right way: &lt;a href=&quot;http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Character.html#isWhitespace(char&quot;&gt;http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Character.html#isWhitespace(char&lt;/a&gt;)&lt;/p&gt;</description>
                <environment></environment>
            <key id="13816">CLJ-419</key>
            <summary>LispReader uses Character.isWhitespace rather than Character.isSpaceChar</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 4 Aug 2010 23:31:00 -0500</created>
                <updated>Sat, 23 Oct 2010 15:03:00 -0500</updated>
                    <resolved>Sat, 23 Oct 2010 15:03:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24172" author="importer" created="Sat, 23 Oct 2010 15:03:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/419&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/419&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24173" author="importer" created="Sat, 23 Oct 2010 15:03:00 -0500"  >&lt;p&gt;stu said: Phil, &lt;/p&gt;

&lt;p&gt;Please add an example and nag me to bump the priority if this is causing real and present pain.&lt;/p&gt;</comment>
                    <comment id="24174" author="importer" created="Sat, 23 Oct 2010 15:03:00 -0500"  >&lt;p&gt;technomancy said: Eh; it&apos;s not causing real pain.&lt;/p&gt;

&lt;p&gt;I would be OK with a WONTFIX if that&apos;s what is decided. Just thought it wouldn&apos;t hurt to have a record of it somewhere (even as a closed-as-invalid ticket), and I was in a particularly pedantic mood last night for some reason.&lt;/p&gt;

&lt;p&gt;I ran across it because of an escaping bug in Wine where I wanted to treat &quot;(use &apos;foo)(-main)&quot; as a single token in bash but two still be valid Clojure code. But luckily I found a better workaround. I am OK with leaving it at lowest priority.&lt;/p&gt;</comment>
                    <comment id="24175" author="importer" created="Sat, 23 Oct 2010 15:03:00 -0500"  >&lt;p&gt;djpowell said: Hmm, I&apos;m not sure isSpaceChar is right - it doesn&apos;t seem to allow things like tabs and newlines.  If you really wanted to support non-break-space, then it would probably be best to just use isWhitespace and add them as a special case.&lt;/p&gt;

&lt;p&gt;Actually... I would quite like to see \ufeff treated as whitespace.  It is the Unicode BOM.  Some editors including Windows Notepad include the BOM at the start of UTF-8 files.  The latest Unicode docs seem to recognise the UTF-8 BOM.  By treating it as whitespace we can avoid any problems with it.&lt;/p&gt;</comment>
                    <comment id="24176" author="importer" created="Sat, 23 Oct 2010 15:03:00 -0500"  >&lt;p&gt;technomancy said: Sounds like I had this not quite right; probably not worth worrying about.&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>

<item>
            <title>[CLJ-416] improvments on agent</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-416</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;hi,i have some ideas to improve the agent system:&lt;br/&gt;
1.Agent&apos;s thread pool must use a custom ThreadFactory to new threads.Set new thread a system name and set it to be daemon.Thread&apos;s name would be used for debug or monitor.And set thread to be daemon asking user to shutdown agents explicitly.&lt;/p&gt;

&lt;p&gt;2.Beacause agent&apos;s thread is daemon,so if a application doesn&apos;t use any agents,the thread pool must not started.I think the agent&apos;s thread pools should be lazy initialized.&lt;/p&gt;

&lt;p&gt;3.I think agent must allow use to define a agent-own thread pool.That thread pool is only used by a agent,not global.just like:&lt;br/&gt;
(define a (agent :executor (java.util.concurrent.Executors/newFixedThreadPool 2)))&lt;br/&gt;
or&lt;br/&gt;
(set-executor!  a  (java.util.concurrent.Executors/newFixedThreadPool 2))&lt;br/&gt;
And then,a new function to shutdown agent&apos;s custom thread pool:&lt;br/&gt;
(shutdown-agent a)&lt;/p&gt;

&lt;p&gt;Why do we need a custom thread pool?&lt;br/&gt;
First, the default thread pool is global, send use the thread pool&lt;br/&gt;
is a fixed size cpus +2, is likely to become the system bottleneck&lt;br/&gt;
sometime. Although you can use the send-off, use the cache thread&lt;br/&gt;
pool, but in a real world application, I can not use the cache thread&lt;br/&gt;
pool, which will introduce the risk of OutOfMemoryError, normally I&lt;br/&gt;
like to use a fixed-size thread pool.&lt;/p&gt;

&lt;p&gt;Second, the actions which global thread pool execute are from a&lt;br/&gt;
variety of agents, the actions are not homogeneous, and can not&lt;br/&gt;
maximize the efficient use of the thread pool.&lt;/p&gt;

&lt;p&gt;These are my suggestions on agent,thanks for this great language,i enjoy it.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13813">CLJ-416</key>
            <summary>improvments on agent</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 30 Jul 2010 16:15:00 -0500</created>
                <updated>Fri, 1 Mar 2013 12:47:03 -0600</updated>
                    <resolved>Tue, 27 Nov 2012 14:18:49 -0600</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>2</watches>
                        <comments>
                    <comment id="24167" author="importer" created="Tue, 24 Aug 2010 18:42:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/416&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/416&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="30063" author="halgari" created="Tue, 27 Nov 2012 14:18:49 -0600"  >&lt;p&gt;Closing as &quot;completed&quot; as most of these requests are handled in 1.5 via the new send-via, and set executor functions.&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>

<item>
            <title>[CLJ-414] In latest clojure, empty list is neither true nor false</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-414</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;In latest Clojure, compiled today:&lt;/p&gt;

&lt;p&gt;user&amp;gt; (true? ())&lt;br/&gt;
false&lt;br/&gt;
user&amp;gt; (false? ())&lt;br/&gt;
false&lt;/p&gt;

&lt;p&gt;This makes empty collections the only entities in Clojure which are neither true, nor false. &lt;br/&gt;
I&apos;m fairly sure () used to be true &amp;#8211; is this an intentional change? Googling reveals lots of warnings about the empty list not being false in Clojure.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13811">CLJ-414</key>
            <summary>In latest clojure, empty list is neither true nor false</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Sat, 24 Jul 2010 21:56:00 -0500</created>
                <updated>Tue, 24 Aug 2010 00:35:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 00:35:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24159" author="importer" created="Tue, 24 Aug 2010 00:35:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/414&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/414&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24160" author="importer" created="Tue, 24 Aug 2010 00:35:00 -0500"  >&lt;p&gt;bpsm said: You&apos;ve confused &lt;em&gt;true?&lt;/em&gt; and &lt;em&gt;false?&lt;/em&gt; with &lt;em&gt;boolean&lt;/em&gt;. &lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Clojure 1.0.1-alpha-SNAPSHOT
user=&amp;gt; (&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;? &apos;())
&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;
user=&amp;gt; (&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;? &apos;())
&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;
user=&amp;gt; (&lt;span class=&quot;code-object&quot;&gt;boolean&lt;/span&gt; &apos;())
&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;Clojure 1.1.0
user=&amp;gt; (&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;? &apos;())
&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;
user=&amp;gt; (&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;? &apos;())
&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;
user=&amp;gt; (&lt;span class=&quot;code-object&quot;&gt;boolean&lt;/span&gt; &apos;())
&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;Clojure 1.2.0-beta1
user=&amp;gt; (&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;? &apos;())
&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;
user=&amp;gt; (&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;? &apos;())
&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;
user=&amp;gt; (&lt;span class=&quot;code-object&quot;&gt;boolean&lt;/span&gt; &apos;())
&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;em&gt;boolean&lt;/em&gt; converts its argument to either &lt;b&gt;true&lt;/b&gt; or &lt;b&gt;false&lt;/b&gt;. &lt;b&gt;nil&lt;/b&gt; and &lt;b&gt;false&lt;/b&gt; yield &lt;b&gt;false&lt;/b&gt;, everything else yields &lt;b&gt;true&lt;/b&gt;. &lt;br/&gt;
&lt;em&gt;true?&lt;/em&gt; and &lt;em&gt;false?&lt;/em&gt; do no such conversion, nor should they. Only &lt;b&gt;true&lt;/b&gt; is &lt;em&gt;true?&lt;/em&gt;. Only &lt;b&gt;false&lt;/b&gt; is &lt;em&gt;false?&lt;/em&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>

<item>
            <title>[CLJ-412] clojure.xml/emit, emit-element are not documented at clojure.org</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-412</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Neither function makes an appearance here:&lt;br/&gt;
&lt;a href=&quot;http://clojure.github.com/clojure/clojure.xml-api.html&quot;&gt;http://clojure.github.com/clojure/clojure.xml-api.html&lt;/a&gt;&lt;br/&gt;
Despite the fact that neither appears to be private. Perhaps the doc generator just ignores all functions that have no doc comment?&lt;/p&gt;</description>
                <environment></environment>
            <key id="13809">CLJ-412</key>
            <summary>clojure.xml/emit, emit-element are not documented at clojure.org</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 23 Jul 2010 00:57:00 -0500</created>
                <updated>Tue, 24 Aug 2010 00:34:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 00:34:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24150" author="importer" created="Tue, 24 Aug 2010 00:34:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/412&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/412&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24151" author="importer" created="Tue, 24 Aug 2010 00:34:00 -0500"  >&lt;p&gt;stu said: If a var is (a) public (b) has a docstring and (c) has :added metadata, then the Clojure team is committed to supporting it. These vars don&apos;t meet the criteria. In the context of a broader overhaul of XML support these might become official APIs.&lt;/p&gt;</comment>
                    <comment id="24152" author="importer" created="Tue, 24 Aug 2010 00:34:00 -0500"  >&lt;p&gt;bpsm said: That makes sense. I wasn&apos;t aware of those conventions. Perhaps the library should advertise itself as being only for XML reading:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;--- a/src/clj/clojure/xml.clj
+++ b/src/clj/clojure/xml.clj
@@ -6,7 +6,7 @@
 ;   the terms of &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; license.
 ;   You must not remove &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; notice, or any other, from &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; software.
 
-(ns ^{:doc &lt;span class=&quot;code-quote&quot;&gt;&quot;XML reading/writing.&quot;&lt;/span&gt;
+(ns ^{:doc &lt;span class=&quot;code-quote&quot;&gt;&quot;XML reading.&quot;&lt;/span&gt;
        :author &lt;span class=&quot;code-quote&quot;&gt;&quot;Rich Hickey&quot;&lt;/span&gt;}
   clojure.xml
   (:&lt;span class=&quot;code-keyword&quot;&gt;import&lt;/span&gt; (org.xml.sax ContentHandler Attributes SAXException)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&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>

<item>
            <title>[CLJ-411] clojure.xml/emit should be encoding-aware</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-411</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;clojure.xml/emit blithely asserts that it&apos;s writing UTF-8 despite the fact that it&apos;s actually writing &lt;b&gt;characters&lt;/b&gt;, not bytes. Encoding isn&apos;t actually decided until actual bytes are written. This forces clients using clojure.xml/emit to write XML back to disk to use UTF-8. They won&apos;t know to do that unless they actually peek at the implementation. This behavior isn&apos;t documented.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(defn emit [x]
  (println &lt;span class=&quot;code-quote&quot;&gt;&quot;&amp;lt;?xml version=&apos;1.0&apos; encoding=&apos;UTF-8&apos;?&amp;gt;&quot;&lt;/span&gt;)
  (emit-element x))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13808">CLJ-411</key>
            <summary>clojure.xml/emit should be encoding-aware</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 23 Jul 2010 00:53:00 -0500</created>
                <updated>Fri, 1 Oct 2010 09:56:00 -0500</updated>
                    <resolved>Fri, 1 Oct 2010 09:56:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24148" author="importer" created="Fri, 1 Oct 2010 09:56:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/411&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/411&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24149" author="importer" created="Fri, 1 Oct 2010 09:56:00 -0500"  >&lt;p&gt;stu said: APIs without docstrings (like emit) are not supported.&lt;/p&gt;

&lt;p&gt;We would welcome a redesign of the XML support that made this good enough to publicize and support.&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>

<item>
            <title>[CLJ-409] SAXParserFactoryImpl is missing at unit testing time</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-409</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;SAXParserFactoryImpl seems to be AWOL while clojure unit tests are running, but is present when clojure is started from the command line. WTF?&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(ns clojure.test-clojure.clojure-xml
  (:use clojure.test)
  (:&lt;span class=&quot;code-keyword&quot;&gt;import&lt;/span&gt; [javax.xml.parsers SAXParserFactory])
  (:require [clojure.xml :as xml]))

(deftest sax-parser-factory-is-not-awol
  (is (SAXParserFactory/newInstance)))
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;Tell ant to run the unit tests:

$ ant test

And get the following exception:

ERROR in (sax-parser-factory-is-not-awol) (SAXParserFactory.java:134)
expected: (SAXParserFactory/newInstance)
actual: javax.xml.parsers.FactoryConfigurationError: Provider
        org.apache.xerces.jaxp.SAXParserFactoryImpl not found
at javax.xml.parsers.SAXParserFactory.newInstance (SAXParserFactory.java:134)
   clojure.test_clojure.clojure_xml/fn (clojure_xml.clj:17)

Yet, when I run clojure from the command line and &lt;span class=&quot;code-keyword&quot;&gt;do&lt;/span&gt; the same thing,
all is well.

$ java -jar clojure.jar
Clojure 1.2.0-beta1
user=&amp;gt; (&lt;span class=&quot;code-keyword&quot;&gt;import&lt;/span&gt; &apos;javax.xml.parsers.SAXParserFactory)
javax.xml.parsers.SAXParserFactory
user=&amp;gt; (SAXParserFactory/newInstance)
#&amp;lt;SAXParserFactoryImpl org.apache.xerces.jaxp.SAXParserFactoryImpl@19381960&amp;gt;
user=&amp;gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;See also:&lt;br/&gt;
&lt;a href=&quot;http://github.com/bpsm/clojure/commits/409show&quot;&gt;http://github.com/bpsm/clojure/commits/409show&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13806">CLJ-409</key>
            <summary>SAXParserFactoryImpl is missing at unit testing time</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 23 Jul 2010 00:36:00 -0500</created>
                <updated>Tue, 24 Aug 2010 00:34:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 00:34:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24137" author="importer" created="Tue, 24 Aug 2010 00:34:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/409&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/409&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
show-409-on-oberon.txt - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aSijYaMmCr35jQeJe5cbLr/download/aSijYaMmCr35jQeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aSijYaMmCr35jQeJe5cbLr/download/aSijYaMmCr35jQeJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24138" author="importer" created="Tue, 24 Aug 2010 00:34:00 -0500"  >&lt;p&gt;bpsm said: Provide link to my &apos;409show&apos; branch, which does what it says on the tin.&lt;/p&gt;</comment>
                    <comment id="24139" author="importer" created="Tue, 24 Aug 2010 00:34:00 -0500"  >&lt;p&gt;stu said: This code works fine for me locally (Mac OS X). I would investigate a busted Ant setup, or getting a different version of Java, on your end.&lt;/p&gt;

&lt;p&gt;I&apos;ll be looking through the rest of the XML tickets your filed this morning &amp;#8211; thanks for taking the time!&lt;/p&gt;</comment>
                    <comment id="24140" author="importer" created="Tue, 24 Aug 2010 00:34:00 -0500"  >&lt;p&gt;bpsm said: Thanks. I&apos;ve seen this both on my Mac and Linux netbook (JDK 1.6.0_20), but I&apos;m sitting in front of a machine I haven&apos;t tried to reproduce this on yet, so I&apos;ll give it a whirl here and report what I find.&lt;/p&gt;</comment>
                    <comment id="24141" author="importer" created="Tue, 24 Aug 2010 00:34:00 -0500"  >&lt;p&gt;bpsm said: [&lt;a href=&quot;file:aSijYaMmCr35jQeJe5cbLr&quot;&gt;file:aSijYaMmCr35jQeJe5cbLr&lt;/a&gt;]: demonstrates #409 on x64, Java1.6.0_20, ant 1.7.1&lt;/p&gt;</comment>
                    <comment id="24142" author="importer" created="Tue, 24 Aug 2010 00:34:00 -0500"  >&lt;p&gt;bpsm said: I see the failure on my workstation as well, alas. I&apos;ve attached a transcript including ant -diagnostics output. If it is my local setup at fault, I&apos;m not sure what it could be. Perhaps something there will catch your eye.&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>

<item>
            <title>[CLJ-408] clojure.xml emit does not properly escape attribute and element content</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-408</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(with-out-str
  (clojure.xml/emit-element {:tag :e :attrs nil :content &lt;span class=&quot;code-quote&quot;&gt;&quot;&amp;amp;&quot;&lt;/span&gt;}))
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
produces: &amp;lt;e&amp;gt;&amp;amp;&amp;lt;/e&amp;gt;
correct would be: &amp;lt;e&amp;gt;&amp;amp;amp;&amp;lt;/e&amp;gt;
This is &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; both element content and attribute content. &amp;lt; and &amp;gt; are not escaped as well. Furthermore, apostrophe ( &apos; ) in an attribute value leads to broken xml:
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;
&amp;lt;e a=&apos;&apos;&apos;/&amp;gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13805">CLJ-408</key>
            <summary>clojure.xml emit does not properly escape attribute and element content</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="richhickey">Rich Hickey</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 23 Jul 2010 09:31:00 -0500</created>
                <updated>Mon, 15 Nov 2010 12:49:00 -0600</updated>
                    <resolved>Sat, 30 Oct 2010 14:47:18 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24133" author="importer" created="Tue, 28 Sep 2010 08:51:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/408&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/408&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
408-escape-and-in-content-and-attribute-value.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aBCHT2LZer34ioeJe5cbLr/download/aBCHT2LZer34ioeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aBCHT2LZer34ioeJe5cbLr/download/aBCHT2LZer34ioeJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24134" author="importer" created="Tue, 28 Sep 2010 08:51:00 -0500"  >&lt;p&gt;bpsm said: Tests that demonstrate #408 are available at &lt;a href=&quot;http://github.com/bpsm/test-clojure-xml&quot;&gt;http://github.com/bpsm/test-clojure-xml&lt;/a&gt;.&lt;/p&gt;</comment>
                    <comment id="24135" author="importer" created="Tue, 28 Sep 2010 08:51:00 -0500"  >&lt;p&gt;bpsm said: [&lt;a href=&quot;file:aBCHT2LZer34ioeJe5cbLr&quot;&gt;file:aBCHT2LZer34ioeJe5cbLr&lt;/a&gt;]: see also &lt;a href=&quot;http://github.com/bpsm/clojure/commits/fix408,410,277&quot;&gt;http://github.com/bpsm/clojure/commits/fix408,410,277&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24136" author="importer" created="Tue, 28 Sep 2010 08:51:00 -0500"  >&lt;p&gt;bpsm said: I saw rich&apos;s message about marking issues &quot;ready for test&quot; to get patches noticed. This was in connection with marking #410 as ready for test. This issue is joined at the hip with 410 and also has a patch ready.&lt;/p&gt;</comment>
                    <comment id="25908" author="stu" created="Sat, 30 Oct 2010 14:47:18 -0500"  >&lt;p&gt;emit is not part of Clojure&apos;s public API, and we don&apos;t want to grow a public API via an issue-driven random walk. If you are interested in this issue, please chime in on the design page for a new data.xml library: &lt;a href=&quot;http://dev.clojure.org/display/DXML/Home&quot;&gt;http://dev.clojure.org/display/DXML/Home&lt;/a&gt;&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="10008">Not Approved</customfieldvalue>

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

<item>
            <title>[CLJ-406] Typo in underive causes breaking in the resulting hierarchy</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-406</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;There&apos;s a typo on line 4515 in core.clj, in the definition of underive:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;{:parent ... }
; should be
{:parents ... }
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
causing breakage in hierarchies which had relationships underived in them.

E.g.
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;
(derive ::foo ::bar)
(underive ::foo ::bar)
(derive ::foo ::bar)
; =&amp;gt; NPE&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;#clojure discussion:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://clojure-log.n01se.net/date/2010-07-21.html#20:54&quot;&gt;http://clojure-log.n01se.net/date/2010-07-21.html#20:54&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13803">CLJ-406</key>
            <summary>Typo in underive causes breaking in the resulting hierarchy</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 22 Jul 2010 03:20:00 -0500</created>
                <updated>Tue, 24 Aug 2010 18:31:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 18:31:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24124" author="importer" created="Tue, 24 Aug 2010 18:31:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/406&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/406&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24125" author="importer" created="Tue, 24 Aug 2010 18:31:00 -0500"  >&lt;p&gt;stu said: Already discussed as a subset of #382.&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>

<item>
            <title>[CLJ-405] better error messages for bad defrecord calls</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-405</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;defrecord could tell you if, e.g., you didn&apos;t specify an interface before leaping into method bodies. See &lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/f52f90954edd8b09&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/f52f90954edd8b09&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13802">CLJ-405</key>
            <summary>better error messages for bad defrecord calls</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>Tue, 20 Jul 2010 15:53:00 -0500</created>
                <updated>Tue, 24 Aug 2010 00:28:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="24122" author="importer" created="Tue, 24 Aug 2010 00:28:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/405&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/405&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24123" author="importer" created="Tue, 24 Aug 2010 00:28:00 -0500"  >&lt;p&gt;stu said: This could be fixed with an assert-valid-defrecord call in core_deftype, similar to assert-valid-fdecl in core.clj. Such a function would also be a place to hang other defrecord error messages.&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>

<item>
            <title>[CLJ-401] Promote &quot;seqable?&quot; from contrib?</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-401</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;This was vaguely discussed &lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/c9eef488d27bdf37&quot;&gt;here&lt;/a&gt; and could potenntially help &lt;a href=&quot;http://www.assembla.com/spaces/clojure/support/tickets/400-a-faster-flatten&quot;&gt;this ticket&lt;/a&gt; as well as be generally useful.&lt;/p&gt;

&lt;p&gt;I don&apos;t speak for everyone but when I saw sequential? I assumed it would have the semantics that seqable? does. Just my opinion, I&apos;d love to hear someone&apos;s who is more informed than mine.&lt;/p&gt;

&lt;p&gt;In the proposed patch referenced in the ticket above, if seqable? could be used in place of sequential? flatten could be more powerful and work with maps/sets/java collections. Here&apos;s how it would look:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(defn flatten [coll]
  (lazy-seq
    (when-let [coll (seq coll)]
      (let [x (first coll)]
        (&lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (seqable? x)
          (concat (flatten x) (flatten (next coll)))
          (cons x (flatten (next coll))))))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;And an example:&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (flatten #{1 2 3 #{4 5 {6 {7 &lt;a href=&quot;#tok1-block-tok&quot;&gt;8 9 10 #�tok1-block-tok&lt;/a&gt;}}}})&lt;br/&gt;
(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18)&lt;/p&gt;</description>
                <environment></environment>
            <key id="13798">CLJ-401</key>
            <summary>Promote &quot;seqable?&quot; from contrib?</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>Tue, 13 Jul 2010 10:45:00 -0500</created>
                <updated>Tue, 24 Aug 2010 09:19:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>1</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="24105" author="importer" created="Tue, 24 Aug 2010 09:19:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/401&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/401&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>

<item>
            <title>[CLJ-400] A faster flatten</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-400</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;As discussed in &lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/c9eef488d27bdf37&quot;&gt;this thread&lt;/a&gt;, I am submitting a more performant version of flatten for review. It has the same semantics as the current core/flatten. I have also updated the doc string to say that &quot;(flatten nil) returns the empty list&quot;, because that&apos;s what the current version of core/flatten does as well.&lt;/p&gt;

&lt;p&gt;I haven&apos;t mailed in a CA yet, but I will tomorrow morning.&lt;/p&gt;

&lt;p&gt;Edit: Of course I&apos;d mess my first ticket up &lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/smile.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;. I am not immediately seeing an option to edit this to add the &quot;patch&quot; tag or add the &quot;ready to test&quot; action. Sorry folks&lt;/p&gt;</description>
                <environment></environment>
            <key id="13797">CLJ-400</key>
            <summary>A faster flatten</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>Tue, 13 Jul 2010 13:18:00 -0500</created>
                <updated>Tue, 24 Aug 2010 00:19:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>2</watches>
                        <comments>
                    <comment id="24104" author="importer" created="Tue, 24 Aug 2010 00:19:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/400&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/400&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
flatten-enhancement.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/c5chtAJQir353NeJe5cbLr/download/c5chtAJQir353NeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/c5chtAJQir353NeJe5cbLr/download/c5chtAJQir353NeJe5cbLr&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>

<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>

<item>
            <title>[CLJ-395] &quot;underive&quot; corrupts ad hoc hierarchies.</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-395</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;See transcript below, from 1.20-dev snapshot compiled about a week ago:&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (derive ::dad ::grandad)&lt;br/&gt;
nil&lt;br/&gt;
user=&amp;gt; (derive ::son ::dad)&lt;br/&gt;
nil&lt;br/&gt;
user=&amp;gt; (underive ::dad ::grandad)&lt;br/&gt;
nil&lt;br/&gt;
user=&amp;gt; (derive ::dad ::grandad)&lt;br/&gt;
java.lang.NullPointerException (NO_SOURCE_FILE:0)&lt;br/&gt;
user=&amp;gt; (derive ::foo ::bar)&lt;br/&gt;
java.lang.NullPointerException (NO_SOURCE_FILE:0)&lt;br/&gt;
user=&amp;gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13792">CLJ-395</key>
            <summary>&quot;underive&quot; corrupts ad hoc hierarchies.</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 7 Jul 2010 02:34:00 -0500</created>
                <updated>Tue, 24 Aug 2010 11:06:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 11:06:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24085" 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/395&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/395&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24086" author="importer" created="Tue, 24 Aug 2010 11:06:00 -0500"  >&lt;p&gt;stu said: Duplicates #382.&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>

<item>
            <title>[CLJ-379] problem with classloader when run as windows service</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-379</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;I found following error when I run clojure application as MS Windows service (via procrun from Apache Daemon project).  When I tried to do &apos;require&apos; during run-time, I got NullPointerException.  This happened as baseLoader function from RT class returned null in such environment (the value of Thread.currentThread().getContextClassLoader()).  (Although my app works fine when I run my application as standalone program, not as service).&lt;br/&gt;
This error was fixed by explicit setting of class loader with following code: &lt;/p&gt;

&lt;p&gt;(.setContextClassLoader (Thread/currentThread) (java.lang.ClassLoader/getSystemClassLoader))&lt;/p&gt;

&lt;p&gt;before any call to &apos;require&apos;....&lt;/p&gt;

&lt;p&gt;May be you need to modify &apos;baseLoader&apos; function, so it will check is value of Thread.currentThread().getContextClassLoader() is null or not, and if null, then return value of java.lang.ClassLoader.getSystemClassLoader() ?&lt;/p&gt;</description>
                <environment></environment>
            <key id="13776">CLJ-379</key>
            <summary>problem with classloader when run as windows service</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</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>Sun, 13 Jun 2010 10:24:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:40:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="24022" author="importer" created="Tue, 24 Aug 2010 10:40:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/379&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/379&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
ticket-379-fix.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/c5XWHcD4yr34HveJe5ccaP/download/c5XWHcD4yr34HveJe5ccaP&quot;&gt;https://www.assembla.com/spaces/clojure/documents/c5XWHcD4yr34HveJe5ccaP/download/c5XWHcD4yr34HveJe5ccaP&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24023" author="importer" created="Tue, 24 Aug 2010 10:40:00 -0500"  >&lt;p&gt;alexott said: possible fix is attached&lt;/p&gt;</comment>
                    <comment id="24024" author="importer" created="Tue, 24 Aug 2010 10:40:00 -0500"  >&lt;p&gt;alexott said: [&lt;a href=&quot;file:c5XWHcD4yr34HveJe5ccaP&quot;&gt;file:c5XWHcD4yr34HveJe5ccaP&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>

<item>
            <title>[CLJ-375] metadata literal enhancements</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-375</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;1) Merge metadata literals (i.e. metadata on literal with metadata adds to it rather than replaces (but will replace same key)) &lt;br/&gt;
^{:fred :ethel} ^{:ricky :lucy} foo yields metadata of {:fred :ethel, :ricky :lucy}&lt;/p&gt;

&lt;p&gt;2) ^:a-keyword becomes {:a-keyword true} metadata&lt;/p&gt;</description>
                <environment></environment>
            <key id="13772">CLJ-375</key>
            <summary>metadata literal enhancements</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="cgrand">Christophe Grand</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 8 Jun 2010 15:56:00 -0500</created>
                <updated>Tue, 28 Sep 2010 15:51:00 -0500</updated>
                    <resolved>Tue, 28 Sep 2010 15:51:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24004" author="importer" created="Tue, 28 Sep 2010 15:51:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/375&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/375&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-read-foo-bar-as-foo-true-bar-and-merge-existing-meta.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dWhNbgCWKr34aBeJe5cbCb/download/dWhNbgCWKr34aBeJe5cbCb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dWhNbgCWKr34aBeJe5cbCb/download/dWhNbgCWKr34aBeJe5cbCb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24005" author="importer" created="Tue, 28 Sep 2010 15:51:00 -0500"  >&lt;p&gt;cgrand said: [&lt;a href=&quot;file:dWhNbgCWKr34aBeJe5cbCb&quot;&gt;file:dWhNbgCWKr34aBeJe5cbCb&lt;/a&gt;]: patch + test&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>

<item>
            <title>[CLJ-363] defn doesn&apos;t put the right metadata on its fn value</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-363</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;duplicate of #270&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;user=&amp;gt; (defn foo {:bar :baz} [] 42)
#&apos;user/foo
user=&amp;gt; (meta #&apos;foo)
{:ns #&amp;lt;Namespace user&amp;gt;, :name foo, :file &lt;span class=&quot;code-quote&quot;&gt;&quot;NO_SOURCE_PATH&quot;&lt;/span&gt;, :line 221, :arglists ([]), :bar :baz}
user=&amp;gt; (meta foo)
{:ns #&amp;lt;Namespace user&amp;gt;, :name foo} ; the value has only the basic keys
user=&amp;gt; (defn foo {:lucy :ethel} [] 43)
#&apos;user/foo
user=&amp;gt; (meta #&apos;foo)
{:ns #&amp;lt;Namespace user&amp;gt;, :name foo, :file &lt;span class=&quot;code-quote&quot;&gt;&quot;NO_SOURCE_PATH&quot;&lt;/span&gt;, :line 224, :arglists ([]), :lucy :ethel}
user=&amp;gt; (meta foo) ; the value has the previous metadata
{:ns #&amp;lt;Namespace user&amp;gt;, :name foo, :file &lt;span class=&quot;code-quote&quot;&gt;&quot;NO_SOURCE_PATH&quot;&lt;/span&gt;, :line 221, :arglists ([]), :bar :baz}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13760">CLJ-363</key>
            <summary>defn doesn&apos;t put the right metadata on its fn value</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 27 May 2010 00:13:00 -0500</created>
                <updated>Tue, 24 Aug 2010 08:20:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 08:20:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23956" author="importer" created="Tue, 24 Aug 2010 08:20:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/363&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/363&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23957" author="importer" created="Tue, 24 Aug 2010 08:20:00 -0500"  >&lt;p&gt;cgrand said: &lt;b&gt;Parent&lt;/b&gt; association with ticket #270 was added&lt;/p&gt;</comment>
                    <comment id="23958" author="importer" created="Tue, 24 Aug 2010 08:20:00 -0500"  >&lt;p&gt;cgrand said: duplicate of #270&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>

<item>
            <title>[CLJ-354] &lt;= and &gt;= comparisons against NaN return true</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-354</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;I would expect the attached clojure program to have the same output as the attached java program. However, their output differs. The following is a unidiff from the clojure output to the java output, i.e., each line beginning with a minus sign is what I would consider wrong output, and the corresponding line beginning with a plus sign is the correct output.&lt;/p&gt;

&lt;p&gt;@@ -14,3 +14,3 @@&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;&amp;lt;=   0 NaN true&lt;/li&gt;
	&lt;li&gt;&amp;lt;= NaN   1 true&lt;/li&gt;
	&lt;li&gt;&amp;lt;= NaN NaN true&lt;br/&gt;
+  &amp;lt;=   0 NaN false&lt;br/&gt;
+  &amp;lt;= NaN   1 false&lt;br/&gt;
+  &amp;lt;= NaN NaN false&lt;br/&gt;
@@ -22,3 +22,3 @@&lt;/li&gt;
	&lt;li&gt;&amp;gt;=   0 NaN true&lt;/li&gt;
	&lt;li&gt;&amp;gt;= NaN   1 true&lt;/li&gt;
	&lt;li&gt;&amp;gt;= NaN NaN true&lt;br/&gt;
+  &amp;gt;=   0 NaN false&lt;br/&gt;
+  &amp;gt;= NaN   1 false&lt;br/&gt;
+  &amp;gt;= NaN NaN false&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Here Java follows IEEE 754; see also &amp;lt;&lt;a href=&quot;http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#153654&quot;&gt;http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#153654&lt;/a&gt;&amp;gt;.&lt;/p&gt;

&lt;p&gt;I suspect the bug is because clojure.lang.Numbers.lte(x,y) is implemented by negating the result of lt(y,x), and similarly for gte: &amp;lt;&lt;a href=&quot;http://github.com/richhickey/clojure/blob/65ae4928119a50e892bc33e8cbb47a82ebef98ee/src/jvm/clojure/lang/Numbers.java#L193&quot;&gt;http://github.com/richhickey/clojure/blob/65ae4928119a50e892bc33e8cbb47a82ebef98ee/src/jvm/clojure/lang/Numbers.java#L193&lt;/a&gt;&amp;gt;.&lt;/p&gt;

&lt;p&gt;This is with Clojure 1.2.0-master-SNAPSHOT (git hash 65ae4928119a50e892bc33e8cbb47a82ebef98ee).&lt;/p&gt;

&lt;p&gt;I mentioned this on the Google group, but no-one commented anything: &amp;lt;&lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/623d7f50fafaa816&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/623d7f50fafaa816&lt;/a&gt;&amp;gt;.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13751">CLJ-354</key>
            <summary>&lt;= and &gt;= comparisons against NaN return true</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Sat, 22 May 2010 11:57:00 -0500</created>
                <updated>Sat, 19 Mar 2011 18:44:55 -0500</updated>
                    <resolved>Fri, 1 Oct 2010 16:14:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="23903" author="importer" created="Fri, 1 Oct 2010 16:14:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/354&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/354&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
nan-comparison.clj - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bSK-9AzyGr35jbeJe5cbLr/download/bSK-9AzyGr35jbeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bSK-9AzyGr35jbeJe5cbLr/download/bSK-9AzyGr35jbeJe5cbLr&lt;/a&gt;&lt;br/&gt;
nan.java - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bSLbjAzyGr35jbeJe5cbLr/download/bSLbjAzyGr35jbeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bSLbjAzyGr35jbeJe5cbLr/download/bSLbjAzyGr35jbeJe5cbLr&lt;/a&gt;&lt;br/&gt;
c-nan.txt - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bSLdpEzyGr35jbeJe5cbLr/download/bSLdpEzyGr35jbeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bSLdpEzyGr35jbeJe5cbLr/download/bSLdpEzyGr35jbeJe5cbLr&lt;/a&gt;&lt;br/&gt;
j-nan.txt - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bSLft0zyGr35jbeJe5cbLr/download/bSLft0zyGr35jbeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bSLft0zyGr35jbeJe5cbLr/download/bSLft0zyGr35jbeJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23904" author="importer" created="Fri, 1 Oct 2010 16:14:00 -0500"  >&lt;p&gt;stu said: This appears to be fixed in 1.3 master.&lt;/p&gt;</comment>
                    <comment id="26313" author="jks" created="Sat, 19 Mar 2011 14:52:21 -0500"  >&lt;p&gt;Not fixed on current git master: the test program still prints e.g. &lt;tt&gt;&amp;lt;=   0 NaN true&lt;/tt&gt;. Interestingly, &lt;tt&gt;(&amp;lt;= (float 0.0) Float/NaN)&lt;/tt&gt; returns false, while &lt;tt&gt;(let [op &amp;lt;=] (op (float 0.0) Float/NaN))&lt;/tt&gt; returns true. &lt;/p&gt;</comment>
                    <comment id="26316" author="ataggart" created="Sat, 19 Mar 2011 18:44:55 -0500"  >&lt;p&gt;See &lt;a href=&quot;http://dev.clojure.org/jira/browse/CLJ-738&quot; title=&quot;&amp;lt;= is incorrect when args include Double/NaN&quot;&gt;&lt;del&gt;CLJ-738&lt;/del&gt;&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>

<item>
            <title>[CLJ-350] namespace function NPE if namespace does not exist</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-350</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;The namespace function throws an NPE if the namespace of the symbol does not exist. For example:&lt;/p&gt;

&lt;p&gt;(namespace ::x/y)&lt;br/&gt;
;=&amp;gt; NPE&lt;/p&gt;

&lt;p&gt;The following patch changes corrects this. The resulting code throws an IllegalArgumentException with the message: &quot;Namespace does not exist: x&quot;.&lt;/p&gt;

&lt;p&gt;(Note: My Contributor&apos;s Agreement is in place, but since my request to join the Google clojure-dev group is still pending I decided to go ahead and submit the patch here.)&lt;/p&gt;

&lt;p&gt;-David McNeil&lt;/p&gt;

&lt;p&gt;====&lt;/p&gt;

&lt;p&gt;From 5d65e5d9aabebf4ea5961e4e0bd8483618f8247e Mon Sep 17 00:00:00 2001&lt;br/&gt;
From: David McNeil &amp;lt;dem@dem-laptop.(none)&amp;gt;&lt;br/&gt;
Date: Sat, 15 May 2010 10:55:28 -0500&lt;br/&gt;
Subject: &lt;span class=&quot;error&quot;&gt;&amp;#91;PATCH&amp;#93;&lt;/span&gt; Avoid NPE and throw better exception if symbol&apos;s namespace does not exist.&lt;/p&gt;

&lt;p&gt;&amp;#8212;&lt;br/&gt;
 src/jvm/clojure/lang/LispReader.java |    6 ++++--&lt;br/&gt;
 1 files changed, 4 insertions&lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/add.gif&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;, 2 deletions&lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/forbidden.gif&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;

&lt;p&gt;diff --git a/src/jvm/clojure/lang/LispReader.java b/src/jvm/clojure/lang/LispReader.java&lt;br/&gt;
index 0bfae97..361b9cc 100644&lt;br/&gt;
&amp;#8212; a/src/jvm/clojure/lang/LispReader.java&lt;br/&gt;
+++ b/src/jvm/clojure/lang/LispReader.java&lt;br/&gt;
@@ -302,9 +302,11 @@ private static Object matchSymbol(String s){&lt;br/&gt;
    {&lt;br/&gt;
    Symbol ks = Symbol.intern(s.substring(2));&lt;br/&gt;
    Namespace kns;&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;if(ks.ns != null)&lt;br/&gt;
+   if(ks.ns != null) {
     kns = Compiler.namespaceFor(ks);
-   else
+    if(kns == null)
+     throw new IllegalArgumentException(&quot;Namespace does not exist: &quot; + ks.ns);
+   } else&lt;br/&gt;
     kns = Compiler.currentNS();&lt;br/&gt;
    //auto-resolving keyword&lt;br/&gt;
    return Keyword.intern(kns.name.name,ks.name);
	&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
		&lt;li&gt;&lt;br/&gt;
1.6.3.3&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
            <key id="13747">CLJ-350</key>
            <summary>namespace function NPE if namespace does not exist</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 18 May 2010 00:52:00 -0500</created>
                <updated>Fri, 1 Oct 2010 16:45:00 -0500</updated>
                    <resolved>Fri, 1 Oct 2010 16:45:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23893" author="importer" created="Fri, 1 Oct 2010 16:45:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/350&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/350&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23894" author="importer" created="Fri, 1 Oct 2010 16:45:00 -0500"  >&lt;p&gt;david-mcneil said: This issue was addressed indirectly by ticket 334.  Now the code behaves like this for keywords that reference non-existent namespaces:&lt;/p&gt;

&lt;p&gt;(namespace ::x/y)&lt;/p&gt;

&lt;p&gt;;=&amp;gt; java.lang.Exception: Invalid token: ::x/y&lt;/p&gt;

&lt;p&gt;Seems that is fine, at least it is not an NPE.&lt;/p&gt;

&lt;p&gt;-David&lt;/p&gt;</comment>
                    <comment id="23895" author="importer" created="Fri, 1 Oct 2010 16:45:00 -0500"  >&lt;p&gt;donmullen said: This is fixed, as David indicated - ::x/y is an invalid token.&lt;/p&gt;

&lt;p&gt;Current message is:&lt;/p&gt;


&lt;p&gt;Exception Invalid token: ::x/y  clojure.lang.LispReader.interpretToken (LispReader.java:286)&lt;/p&gt;

&lt;p&gt;Exception Unmatched delimiter: )  clojure.lang.LispReader$UnmatchedDelimiterReader.invoke (LispReader.java:1039)&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>

<item>
            <title>[CLJ-346] (pprint-newline :fill) is not handled correctly</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-346</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Filled pretty printing (where we try to fit as many elements on a line as possible) is being too aggressive as we can see when we try to print the following array:&lt;/p&gt;

&lt;p&gt;user&amp;gt; (binding &lt;span class=&quot;error&quot;&gt;&amp;#91;*print-right-margin* 20&amp;#93;&lt;/span&gt; (pprint (int-array (range 10))))&lt;/p&gt;

&lt;p&gt;Produces:&lt;/p&gt;

&lt;p&gt;[0,&lt;br/&gt;
 1,&lt;br/&gt;
 2,&lt;br/&gt;
 3,&lt;br/&gt;
 4, 5, 6, 7, 8, 9]&lt;/p&gt;

&lt;p&gt;Rather than &lt;/p&gt;

&lt;p&gt;[0, 1, 2, 3, 4,&lt;br/&gt;
 5, 6, 7, 8, 9]&lt;/p&gt;

&lt;p&gt;or something like that. (I haven&apos;t worked through the exact correct representation for this case).&lt;/p&gt;

&lt;p&gt;We currently only use :fill style newlines for native java arrays.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13743">CLJ-346</key>
            <summary>(pprint-newline :fill) is not handled correctly</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</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="tomfaulhaber">Tom Faulhaber</assignee>
                                <reporter username="importer">Assembla Importer</reporter>
                        <labels>
                    </labels>
                <created>Wed, 12 May 2010 09:45:00 -0500</created>
                <updated>Mon, 29 Nov 2010 20:48:05 -0600</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="23878" author="importer" created="Tue, 24 Aug 2010 08:01:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/346&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/346&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0347-pprint-update-2.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/diLxv6y4Sr35GVeJe5cbLr/download/diLxv6y4Sr35GVeJe5cbLr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/diLxv6y4Sr35GVeJe5cbLr/download/diLxv6y4Sr35GVeJe5cbLr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23879" author="importer" created="Tue, 24 Aug 2010 08:01:00 -0500"  >&lt;p&gt;stu said: [&lt;a href=&quot;file:diLxv6y4Sr35GVeJe5cbLr&quot;&gt;file:diLxv6y4Sr35GVeJe5cbLr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="23880" author="importer" created="Tue, 24 Aug 2010 08:01:00 -0500"  >&lt;p&gt;stu said: The second patch includes the first, and adds another test.&lt;/p&gt;</comment>
                    <comment id="23881" author="importer" created="Tue, 24 Aug 2010 08:01:00 -0500"  >&lt;p&gt;tomfaulhaber said: This patch was attached to the wrong bug. It should be attached to bug #347. There is no fix for this bug yet.&lt;/p&gt;</comment>
                    <comment id="25921" author="richhickey" created="Fri, 5 Nov 2010 08:07:14 -0500"  >&lt;p&gt;Is this current?&lt;/p&gt;</comment>
                    <comment id="25980" author="stu" created="Mon, 29 Nov 2010 20:48:05 -0600"  >&lt;p&gt;Tom, this patch doesn&apos;t apply, and I am not sure why. Can you take a look?&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="10006">Incomplete</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                        <customfield id="customfield_10003" key="com.atlassian.jira.plugin.system.customfieldtypes:userpicker">
                <customfieldname>Waiting On</customfieldname>
                <customfieldvalues>
                    <customfieldvalue>tomfaulhaber</customfieldvalue>
                </customfieldvalues>
            </customfield>
                            </customfields>
    </item>

<item>
            <title>[CLJ-345] clojure.contrib.string.replace-str throws NPE on nil string</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-345</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Version: Clojure 1.2 / clojure-contrib 1.2&lt;/p&gt;

&lt;p&gt;This call:&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (clojure.contrib.string/replace-str &quot;a&quot; &quot;b&quot; nil)&lt;br/&gt;
#&amp;lt;CompilerException java.lang.NullPointerException (NO_SOURCE_FILE:29)&amp;gt;&lt;/p&gt;

&lt;p&gt;throws a NullPointerException when passed a nil string.  It seems like more corner cases could be automatically handled by returning nil in this case rather than throwing an NPE.  At the very least, it would be nice to update the docstring to state that s cannot be nil.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13742">CLJ-345</key>
            <summary>clojure.contrib.string.replace-str throws NPE on nil string</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Mon, 10 May 2010 10:27:00 -0500</created>
                <updated>Fri, 1 Oct 2010 06:44:00 -0500</updated>
                    <resolved>Fri, 1 Oct 2010 06:44:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23876" author="importer" created="Fri, 1 Oct 2010 06:44:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/345&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/345&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23877" author="importer" created="Fri, 1 Oct 2010 06:44:00 -0500"  >&lt;p&gt;stu said: I evaluated this agains the latest version of the fn in clojre (e.g. clojure.string/replace).&lt;/p&gt;

&lt;p&gt;The documentation string correctly lists legal parameters for replace as string, char, or fn, so an NPE is expected behavior.&lt;/p&gt;

&lt;p&gt;Note also: the contrib versions of most string fns are deprecated.&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>

<item>
            <title>[CLJ-339] Integer autopromotion error</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-339</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;From this thread:&lt;br/&gt;
&lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/db1ffbb36c7d6f48&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/db1ffbb36c7d6f48&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;user=&amp;gt;(def imax (Integer/MAX_VALUE)) &lt;br/&gt;
user=&amp;gt;(+ imax imax) &lt;br/&gt;
4294967294 &lt;/p&gt;

&lt;p&gt;user=&amp;gt;(+ (Integer/MAX_VALUE) (Integer/MAX_VALUE)) &lt;br/&gt;
java.lang.ArithmeticException: integer overflow (NO_SOURCE_FILE:0)&lt;/p&gt;

&lt;p&gt;Also:&lt;br/&gt;
user=&amp;gt;(+ Integer/MAX_VALUE Integer/MAX_VALUE)&lt;br/&gt;
java.lang.ArithmeticException: integer overflow (NO_SOURCE_FILE:0)&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (+ (Integer/MAX_VALUE) imax)&lt;br/&gt;
4294967294&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (+ imax (Integer/MAX_VALUE))&lt;br/&gt;
4294967294&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (+ Integer/MAX_VALUE  Integer/MAX_VALUE Integer/MAX_VALUE)&lt;br/&gt;
6442450941&lt;/p&gt;

&lt;p&gt;Possibly a bug with inlining?&lt;/p&gt;</description>
                <environment></environment>
            <key id="13736">CLJ-339</key>
            <summary>Integer autopromotion error</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 5 May 2010 08:13:00 -0500</created>
                <updated>Fri, 1 Oct 2010 10:13:00 -0500</updated>
                    <resolved>Fri, 1 Oct 2010 10:13:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23854" author="importer" created="Fri, 1 Oct 2010 10:13:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/339&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/339&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23855" author="importer" created="Fri, 1 Oct 2010 10:13:00 -0500"  >&lt;p&gt;devlinsf said: Also, some more cases&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (- Integer/MAX_VALUE  Integer/MAX_VALUE Integer/MAX_VALUE)&lt;br/&gt;
-2147483647&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (- Integer/MIN_VALUE  Integer/MIN_VALUE)&lt;br/&gt;
0&lt;br/&gt;
user=&amp;gt; (- Integer/MAX_VALUE  Integer/MIN_VALUE)&lt;br/&gt;
java.lang.ArithmeticException: integer overflow (NO_SOURCE_FILE:0)&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (- Integer/MAX_VALUE  Integer/MIN_VALUE)&lt;br/&gt;
java.lang.ArithmeticException: integer overflow (NO_SOURCE_FILE:0)&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (- Integer/MIN_VALUE  Integer/MAX_VALUE)&lt;br/&gt;
java.lang.ArithmeticException: integer overflow (NO_SOURCE_FILE:0)&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (* Integer/MIN_VALUE  Integer/MAX_VALUE)&lt;br/&gt;
java.lang.ArithmeticException: integer overflow (NO_SOURCE_FILE:0)&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (* Integer/MAX_VALUE  Integer/MAX_VALUE)&lt;br/&gt;
java.lang.ArithmeticException: integer overflow (NO_SOURCE_FILE:0)&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (* Integer/MAX_VALUE  Integer/MAX_VALUE Integer/MAX_VALUE)&lt;br/&gt;
9903520300447984150353281023&lt;/p&gt;</comment>
                    <comment id="23856" author="importer" created="Fri, 1 Oct 2010 10:13:00 -0500"  >&lt;p&gt;aredington said: When testing with ints, this behavior no longer happens as all arithmetic happens in longs. &lt;/p&gt;

&lt;p&gt;When testing with longs, the overflow behavior occurs consistently, regardless of the involvement of vars or let bindings.&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>

<item>
            <title>[CLJ-319] TransactionalHashMap bug</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-319</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;TransactionalHashMap computation of the bin is buggy. The implementation doesn&apos;t unset the sign bit before using it in accessing the bin array which in some cases cause an ArrayOutOfBoundException to be thrown.&lt;/p&gt;

&lt;p&gt;As Rich Hickey has pointed out, this is an unsupported experimental Class and won&apos;t be fixed unless I provided a patch, so attached is the patch file.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13716">CLJ-319</key>
            <summary>TransactionalHashMap bug</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</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>Mon, 26 Apr 2010 18:58:00 -0500</created>
                <updated>Fri, 1 Oct 2010 16:06:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="23762" author="importer" created="Fri, 1 Oct 2010 16:06:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/319&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/319&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
TransactionalHashMap.java.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cuuZnsuuWr36H0eJe5dVir/download/cuuZnsuuWr36H0eJe5dVir&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cuuZnsuuWr36H0eJe5dVir/download/cuuZnsuuWr36H0eJe5dVir&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23763" author="importer" created="Fri, 1 Oct 2010 16:06:00 -0500"  >&lt;p&gt;megabyte2021 said: [&lt;a href=&quot;file:cuuZnsuuWr36H0eJe5dVir&quot;&gt;file:cuuZnsuuWr36H0eJe5dVir&lt;/a&gt;]: The patch file&lt;/p&gt;</comment>
                    <comment id="23764" author="importer" created="Fri, 1 Oct 2010 16:06:00 -0500"  >&lt;p&gt;stu said: Please add a test case.&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>

<item>
            <title>[CLJ-308] protocol-ize with-open</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-308</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Good use (and documentation example) of protocols: make with-open aware of a Closable protocol for APIs that use a different close convention. See &lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/86c87e1fc4b1347c&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/86c87e1fc4b1347c&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13705">CLJ-308</key>
            <summary>protocol-ize with-open</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="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 21 Apr 2010 17:07:00 -0500</created>
                <updated>Fri, 13 Apr 2012 12:52:37 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>3</votes>
                        <watches>2</watches>
                        <comments>
                    <comment id="23685" author="importer" created="Tue, 24 Aug 2010 16:39:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/308&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/308&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="27491" author="tsdh" created="Fri, 23 Dec 2011 05:11:06 -0600"  >&lt;p&gt;Added a CloseableResource protocol and extended it on java.io.Closeable (implemented by all Readers, Writers, Streams, Channels, Sockets).  Use it in with-open.&lt;/p&gt;

&lt;p&gt;All tests pass.&lt;/p&gt;</comment>
                    <comment id="27495" author="tsdh" created="Fri, 23 Dec 2011 07:14:55 -0600"  >&lt;p&gt;Seems to be related to Scopes (&lt;a href=&quot;http://dev.clojure.org/jira/browse/CLJ-2&quot;&gt;http://dev.clojure.org/jira/browse/CLJ-2&lt;/a&gt;).&lt;/p&gt;</comment>
                    <comment id="27913" author="tsdh" created="Thu, 8 Mar 2012 03:59:24 -0600"  >&lt;p&gt;Updated patch.&lt;/p&gt;</comment>
                    <comment id="28067" author="jafingerhut" created="Mon, 2 Apr 2012 12:11:36 -0500"  >&lt;p&gt;Patch 0001-Added-ClosableResource-protocol-for-with-open.patch dated 08/Mar/12 applies, builds, and tests cleanly on latest master as of Apr 2 2012.  Tassilo has signed a CA.&lt;/p&gt;</comment>
                    <comment id="28137" author="tsdh" created="Fri, 13 Apr 2012 11:23:26 -0500"  >&lt;p&gt;Updated patch to apply cleanly against master again.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11047" name="0001-Added-ClosableResource-protocol-for-with-open.patch" size="2405" author="tsdh" created="Fri, 13 Apr 2012 11:23:25 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10001">Code</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[CLJ-304] contrib get-source no longer works with deftype</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-304</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Now that deftype creates a class (but not a var), you can&apos;t use c.c.repl-utils/get-source on a deftype. Is there something we can do on the Clojure side to help this work again?&lt;/p&gt;</description>
                <environment></environment>
            <key id="13701">CLJ-304</key>
            <summary>contrib get-source no longer works with deftype</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="3" iconUrl="http://dev.clojure.org/jira/images/icons/status_inprogress.gif">In Progress</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="importer">Assembla Importer</reporter>
                        <labels>
                    </labels>
                <created>Tue, 20 Apr 2010 21:18:00 -0500</created>
                <updated>Fri, 3 Dec 2010 11:44:01 -0600</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>2</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="23670" author="importer" created="Tue, 24 Aug 2010 16:38:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/304&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/304&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23671" author="importer" created="Tue, 24 Aug 2010 16:38:00 -0500"  >&lt;p&gt;chouser@n01se.net said: That&apos;s a great question.  get-source just needs a file name and line number.&lt;/p&gt;

&lt;p&gt;If IMeta were a protocol, it could be extended to Class.  That implementation could look for a &quot;well-known&quot; static field, perhaps?  __clojure_meta or something?  Then deftype would just have to populate that field, and get-source would be all set.&lt;/p&gt;

&lt;p&gt;Does that plan have any merit?  Is there a better place to store a file name and line number?&lt;/p&gt;</comment>
                    <comment id="23672" author="importer" created="Tue, 24 Aug 2010 16:38:00 -0500"  >&lt;p&gt;stu said: Seems like a reasonable idea, but this is going to get back-burnered for now, unless there is a dire use case we have missed.&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>

<item>
            <title>[CLJ-293] doto doc minor typo</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-293</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;doto doc has a small typo&lt;/p&gt;</description>
                <environment></environment>
            <key id="13690">CLJ-293</key>
            <summary>doto doc minor typo</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="timothypratley">Timothy Pratley</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Sun, 11 Apr 2010 09:53:00 -0500</created>
                <updated>Tue, 24 Aug 2010 16:23:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 16:23:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23620" author="importer" created="Tue, 24 Aug 2010 16:23:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/293&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/293&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
dotodoc.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/a_SYzart8r37u3eJe5aVNr/download/a_SYzart8r37u3eJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/a_SYzart8r37u3eJe5aVNr/download/a_SYzart8r37u3eJe5aVNr&lt;/a&gt;&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="10007">Ok</customfieldvalue>

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

<item>
            <title>[CLJ-288] Make clojure.core/merge-with accept a wider range of map types</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-288</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;The current implementation of merge-with works only with map types that implement the IFn protocol for key lookup. In particular, this means that it doesn&apos;t work with map-like types created with deftype. The attached patch replaces the call to the map by a call to clojure.core/get, which works on any map-like type.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13685">CLJ-288</key>
            <summary>Make clojure.core/merge-with accept a wider range of map types</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 1 Apr 2010 07:56:00 -0500</created>
                <updated>Fri, 24 Aug 2012 07:40:43 -0500</updated>
                    <resolved>Fri, 24 Aug 2012 07:40:43 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23600" author="importer" created="Tue, 24 Aug 2010 10:11:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/288&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/288&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
merge-with-enhancements.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cIq-tspyur375WeJe5avMc/download/cIq-tspyur375WeJe5avMc&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cIq-tspyur375WeJe5avMc/download/cIq-tspyur375WeJe5avMc&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="29256" author="stuart.sierra" created="Fri, 24 Aug 2012 07:40:43 -0500"  >&lt;p&gt;&lt;a href=&quot;http://dev.clojure.org/jira/browse/CLJ-288&quot; title=&quot;Make clojure.core/merge-with accept a wider range of map types&quot;&gt;&lt;del&gt;CLJ-288&lt;/del&gt;&lt;/a&gt; patch dated 2010-05-27, from Konrad Hinsen, applied before Clojure 1.3.0 was released &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>

<item>
            <title>[CLJ-287] (take-nth 0 coll) spins wheels on Solaris</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-287</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;(take-nth 0 (range 5)) is a silly thing to do, but if you&apos;re anything like me then it inexorably fills heap space and cpu time by an infinite number of RMI calls.&lt;br/&gt;
I&apos;m running Clojure 1.1.0-master-SNAPSHOT under Java 1.6R17 on Solaris 10 and I watched it fill up to 56GB&lt;br/&gt;
I think it should raise an exception instead but Im too new to clojure to recommend one. Sorry&lt;br/&gt;
Cheers&lt;br/&gt;
Simon&lt;/p&gt;</description>
                <environment></environment>
            <key id="13684">CLJ-287</key>
            <summary>(take-nth 0 coll) spins wheels on Solaris</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 31 Mar 2010 19:53:00 -0500</created>
                <updated>Tue, 24 Aug 2010 10:10:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 10:10:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23596" author="importer" created="Tue, 24 Aug 2010 10:10:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/287&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/287&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
take-nth.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/awDmNUpz4r34FheJe5aVNr/download/awDmNUpz4r34FheJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/awDmNUpz4r34FheJe5aVNr/download/awDmNUpz4r34FheJe5aVNr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23597" author="importer" created="Tue, 24 Aug 2010 10:10:00 -0500"  >&lt;p&gt;bhurt said: [&lt;a href=&quot;file:awDmNUpz4r34FheJe5aVNr&quot;&gt;file:awDmNUpz4r34FheJe5aVNr&lt;/a&gt;]: Proposed patch to fix this ticket&lt;/p&gt;</comment>
                    <comment id="23598" author="importer" created="Tue, 24 Aug 2010 10:10:00 -0500"  >&lt;p&gt;stu said: Hi Simon,&lt;/p&gt;

&lt;p&gt;If you set the &lt;b&gt;print-length&lt;/b&gt; you can prevent runaway sequences from trying to print. Try the following, and if still blows up please re-open or file a new bug:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(set! *print-length* 10)
 (take-nth 0 (range 5))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Cheers,&lt;br/&gt;
Stu&lt;/p&gt;</comment>
                    <comment id="23599" author="importer" created="Tue, 24 Aug 2010 10:10:00 -0500"  >&lt;p&gt;bhurt said: I think the real problem is that (take-nth 0 some-list) is invalid.  It&apos;s nonsensical in a deep way- take every 0th element?  If you glanced at my patch, all I did was validate the arguments and throw an exception if the n argument is not positive, rather than returning an infinite list.  I mean, a similar problem shows up if you do (count (take-nth 0 (range 5))).&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>

<item>
            <title>[CLJ-284] Cannot cast 0xFF to a byte (fails range check)</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-284</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Prompted by &lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/c3a12f395651cf65/70d6dde44814da0f&quot;&gt;a thread&lt;/a&gt; on the clojure group.&lt;/p&gt;

&lt;p&gt;The recently added range checking to casts/coercions adversely affects a common usage of the byte cast to pull the 8 LSBs of an integer.  Since the numerical representation of a byte is signed in java, the &lt;tt&gt;Byte.MIN_VALUE&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Byte.MAX_VALUE&amp;lt;/code&amp;gt; used in the range check of &amp;lt;code&amp;gt;clojure.lang.RT.byteCast()&lt;/tt&gt; do not allow for integer values up to 0xFF.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13681">CLJ-284</key>
            <summary>Cannot cast 0xFF to a byte (fails range check)</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 24 Mar 2010 14:23:00 -0500</created>
                <updated>Tue, 28 Sep 2010 13:05:00 -0500</updated>
                    <resolved>Tue, 28 Sep 2010 13:05:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23579" author="importer" created="Tue, 28 Sep 2010 13:05:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/284&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/284&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
ubyte.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/b_MyyAn4mr34xSeJe5avMc/download/b_MyyAn4mr34xSeJe5avMc&quot;&gt;https://www.assembla.com/spaces/clojure/documents/b_MyyAn4mr34xSeJe5avMc/download/b_MyyAn4mr34xSeJe5avMc&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23580" author="importer" created="Tue, 28 Sep 2010 13:05:00 -0500"  >&lt;p&gt;ataggart said: [&lt;a href=&quot;file:b_MyyAn4mr34xSeJe5avMc&quot;&gt;file:b_MyyAn4mr34xSeJe5avMc&lt;/a&gt;]: Adds a ubyte coercion when the resulting byte should be considered unsigned, thus inputs of 0-255 are acceptable&lt;/p&gt;</comment>
                    <comment id="23581" author="importer" created="Tue, 28 Sep 2010 13:05:00 -0500"  >&lt;p&gt;ataggart said: Patch provided to add a ubyte coercion:&lt;/p&gt;

&lt;p&gt;&amp;lt;pre&amp;gt;user=&amp;gt; 0xFF       &lt;br/&gt;
255&lt;br/&gt;
user=&amp;gt; (Integer/toBinaryString 0xFF)&lt;br/&gt;
&quot;11111111&quot;&lt;br/&gt;
user=&amp;gt; (byte 0xFF)&lt;br/&gt;
java.lang.IllegalArgumentException: Value out of range for byte: 255 (NO_SOURCE_FILE:0)&lt;br/&gt;
user=&amp;gt; (ubyte 0xFF)&lt;br/&gt;
-1&lt;br/&gt;
user=&amp;gt; (ubyte 256)  &lt;br/&gt;
java.lang.IllegalArgumentException: Value out of range for unsigned byte: 256 (NO_SOURCE_FILE:0)&lt;br/&gt;
&amp;lt;/pre&amp;gt;&lt;/p&gt;</comment>
                    <comment id="23582" author="importer" created="Tue, 28 Sep 2010 13:05:00 -0500"  >&lt;p&gt;richhickey said: This is really a subset of #441&lt;/p&gt;</comment>
                    <comment id="23583" author="importer" created="Tue, 28 Sep 2010 13:05:00 -0500"  >&lt;p&gt;ataggart said: Agreed.&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>

<item>
            <title>[CLJ-283] recur ignores rest args</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-283</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;When you recur inside a function, the arguments are not assigned as expected:&lt;/p&gt;

&lt;p&gt;(defn weird &lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;amp; b&amp;#93;&lt;/span&gt;&lt;br/&gt;
  (println b)&lt;br/&gt;
  (when (&amp;lt; (first b) 2)&lt;br/&gt;
    (recur (inc (first b)))))&lt;/p&gt;

&lt;p&gt;(weird 1)&lt;/p&gt;

&lt;p&gt;The first time it runs, b is a seq, but the second time it&apos;s just an integer.&lt;/p&gt;

&lt;p&gt;After some discussion I found out this is because there&apos;s no way to apply recur, so technically making recur act as a normal function call means you can&apos;t pass a seq of args in. While this is arguably a decent workaround, it leads to very confusing, undocumented behaviour; at the very least it should be tracked in an issue until a better solution can be found.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13680">CLJ-283</key>
            <summary>recur ignores rest args</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 17 Mar 2010 13:28:00 -0500</created>
                <updated>Tue, 24 Aug 2010 07:55:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 07:55:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23576" author="importer" created="Tue, 24 Aug 2010 07:55:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/283&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/283&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23577" author="importer" created="Tue, 24 Aug 2010 07:55:00 -0500"  >&lt;p&gt;stu said: Recur doesn&apos;t re-enter the function, it just goes back to the top (the vararging doesn&apos;t happen again). Since b is a collection coming in, recur with a collection and you will be fine.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(defn weird [&amp;amp; b]
  (println b)
  (when (&amp;lt; (first b) 2)
    (recur (cons (inc (first b)) (&lt;span class=&quot;code-keyword&quot;&gt;rest&lt;/span&gt; b)))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I find this intuitive, but when I launch the Assembla FAQ feel free to add an item for this if you like.&lt;/p&gt;</comment>
                    <comment id="23578" author="importer" created="Tue, 24 Aug 2010 07:55:00 -0500"  >&lt;p&gt;technomancy said: &amp;gt; I find this intuitive, but when I launch the Assembla FAQ feel free to add an item for this if you like.&lt;/p&gt;

&lt;p&gt;OK. Anecdotally I asked four other seasoned Clojure users what they thought was going on here and only one had an explanation, so most folks are going to think this is an unintended result when they see it. I don&apos;t know if it&apos;s FA enough to qualify this for a FAQ, but even having this closed issue show up in search results is an improvement.&lt;/p&gt;

&lt;p&gt;I know internally there&apos;s a difference between calling a function and executing the body of a function, but up till this point I considered that an implementation detail.&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>

<item>
            <title>[CLJ-279] Numbers as keys in maps must be of the same class to match</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-279</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;In maps, numbers need to be of the same class to match:&lt;/p&gt;

&lt;p&gt;({(BigInteger. &quot;1&quot;) &quot;one&quot;} 1) =&amp;gt; nil&lt;br/&gt;
({(Long. &quot;1&quot;) &quot;one&quot;} 1) =&amp;gt; nil&lt;br/&gt;
({(Integer. &quot;1&quot;) &quot;one&quot;} 1) =&amp;gt; &quot;one&quot;&lt;/p&gt;

&lt;p&gt;although:&lt;/p&gt;

&lt;p&gt;(= (BigInteger. &quot;1&quot;) 1) =&amp;gt; true&lt;br/&gt;
(= (Long. &quot;1&quot;) 1) =&amp;gt; true&lt;/p&gt;</description>
                <environment></environment>
            <key id="13676">CLJ-279</key>
            <summary>Numbers as keys in maps must be of the same class to match</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 10 Mar 2010 22:43:00 -0600</created>
                <updated>Tue, 28 Sep 2010 09:23:00 -0500</updated>
                    <resolved>Tue, 28 Sep 2010 09:23:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23548" author="importer" created="Tue, 28 Sep 2010 09:23:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/279&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/279&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>

<item>
            <title>[CLJ-277] Making clojure.xml/emit a little friendler to xml consumers</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-277</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Currently, clojure.xml/emit breaks the eBay api, because emit adds whitespace before and after :contents. This trivial patch fixes it for me:&lt;br/&gt;
&lt;a href=&quot;http://github.com/tjg/clojure/commit/bbff079d26e627c655b847319a58d76b8b3cec7c&quot;&gt;http://github.com/tjg/clojure/commit/bbff079d26e627c655b847319a58d76b8b3cec7c&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(Dunno whether there&apos;s a good reason emit works that way, or if I&apos;m missing something obvious.)&lt;/p&gt;

&lt;p&gt;I realize that emit&apos;s behavior conforms to the XML spec and it&apos;s probably eBay at fault here. But I can nevertheless see this whitespace causing problems.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13674">CLJ-277</key>
            <summary>Making clojure.xml/emit a little friendler to xml consumers</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, 3 Mar 2010 17:58:00 -0600</created>
                <updated>Tue, 24 Aug 2010 09:41:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23539" author="importer" created="Tue, 24 Aug 2010 09:41:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/277&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/277&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23540" author="importer" created="Tue, 24 Aug 2010 09:41:00 -0500"  >&lt;p&gt;bpsm said: I&apos;ve attached a patch to #410, which also fixes this issue. (In fact, it turns out that it&apos;s the same patch tlj previously attached here.)&lt;/p&gt;</comment>
                    <comment id="23541" author="importer" created="Tue, 24 Aug 2010 09:41:00 -0500"  >&lt;p&gt;stu said: &lt;b&gt;Duplicated&lt;/b&gt; association with ticket #410 was added&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>

<item>
            <title>[CLJ-274] cannot close over mutable fields (in deftype)</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-274</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Simplest case:&lt;/p&gt;

&lt;p&gt;user=&amp;gt;&lt;br/&gt;
(deftype Bench &lt;span class=&quot;error&quot;&gt;&amp;#91;#^{:unsynchronized-mutable true} val&amp;#93;&lt;/span&gt;&lt;br/&gt;
  Runnable&lt;br/&gt;
  (run &lt;span class=&quot;error&quot;&gt;&amp;#91;_&amp;#93;&lt;/span&gt;&lt;br/&gt;
    (fn [] (set! val 5))))&lt;/p&gt;

&lt;p&gt;java.lang.IllegalArgumentException: Cannot assign to non-mutable: val (NO_SOURCE_FILE:5)&lt;/p&gt;

&lt;p&gt;Functions should be able to mutate mutable fields in their surrounding deftype (just like inner classes do in Java).&lt;/p&gt;

&lt;p&gt;Filed as bug, because the loop special form expands into a fn form sometimes:&lt;/p&gt;

&lt;p&gt;user=&amp;gt;&lt;br/&gt;
(deftype Bench &lt;span class=&quot;error&quot;&gt;&amp;#91;#^{:unsynchronized-mutable true} val&amp;#93;&lt;/span&gt;&lt;br/&gt;
  Runnable&lt;br/&gt;
  (run &lt;span class=&quot;error&quot;&gt;&amp;#91;_&amp;#93;&lt;/span&gt;&lt;br/&gt;
    (let [x (loop [] (set! val 5))])))&lt;br/&gt;
java.lang.IllegalArgumentException: Cannot assign to non-mutable: val (NO_SOURCE_FILE:9)&lt;/p&gt;</description>
                <environment></environment>
            <key id="13671">CLJ-274</key>
            <summary>cannot close over mutable fields (in deftype)</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</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>Tue, 23 Feb 2010 16:41:00 -0600</created>
                <updated>Fri, 1 Oct 2010 09:35:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="23526" author="importer" created="Fri, 1 Oct 2010 09:35:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/274&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/274&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23527" author="importer" created="Fri, 1 Oct 2010 09:35:00 -0500"  >&lt;p&gt;donmullen said: Updated each run to &lt;span class=&quot;error&quot;&gt;&amp;#91;_&amp;#93;&lt;/span&gt; for new syntax.&lt;/p&gt;

&lt;p&gt;Now gives exception listed.&lt;/p&gt;</comment>
                    <comment id="23528" author="importer" created="Fri, 1 Oct 2010 09:35:00 -0500"  >&lt;p&gt;richhickey said: We&apos;re not going to allow closing over mutable fields. Instead we&apos;ll have to generate something other than fn for loops et al used as expressions. Not going to come before cinc&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>

<item>
            <title>[CLJ-273] def with a function value returns meta {:macro false}, but def itself doesn&apos;t have meta</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-273</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;On the master (1.2) branch, if you create a def with an initial function value, {:macro false} is added to the metadata of the return value for def. However, if you look again at the metadata on the var itself, the {:macro false} is not present! This breaks the use of contrib&apos;s defalias when aliasing macros, because the new alias is marked as {:macro false}.&lt;/p&gt;

&lt;p&gt;The code below demonstrates the issue, which was introduced in &lt;a href=&quot;http://github.com/richhickey/clojure/commit/430dd4fa711d0008137d7a82d4b4cd27b6e2d6d1&quot;&gt;http://github.com/richhickey/clojure/commit/430dd4fa711d0008137d7a82d4b4cd27b6e2d6d1&lt;/a&gt;, &quot;metadata for fns.&quot;&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;;; all running on 1.2, DIFF noted in comments

(defmacro foo [])
-&amp;gt; #&apos;user/foo

(meta (def bar (.getRoot #&apos;foo)))
-&amp;gt; {:macro &lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;, :ns #&amp;lt;Namespace user&amp;gt;, :name bar, :file &lt;span class=&quot;code-quote&quot;&gt;&quot;NO_SOURCE_PATH&quot;&lt;/span&gt;, :line 83}
;; DIFF: where did that :macro &lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt; come from??

(def bar (.getRoot #&apos;foo))
-&amp;gt; #&apos;user/bar

(meta #&apos;bar)
-&amp;gt; {:ns #&amp;lt;Namespace user&amp;gt;, :name bar, :file &lt;span class=&quot;code-quote&quot;&gt;&quot;NO_SOURCE_PATH&quot;&lt;/span&gt;, :line 84}
;; LIKE 1.1, but really weird: now the :macro &lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt; is gone again!&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13670">CLJ-273</key>
            <summary>def with a function value returns meta {:macro false}, but def itself doesn&apos;t have meta</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="1" iconUrl="http://dev.clojure.org/jira/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="richhickey">Rich Hickey</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 23 Feb 2010 08:16:00 -0600</created>
                <updated>Tue, 24 Aug 2010 09:32:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23525" author="importer" created="Tue, 24 Aug 2010 09:32:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/273&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/273&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>

<item>
            <title>[CLJ-272] load/ns/require/use overhaul</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-272</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Creating this ticket to describe various things people have wanted to change about how ns works:&lt;/p&gt;

&lt;h2&gt;&lt;a name=&quot;Minimalneeds&quot;&gt;&lt;/a&gt;Minimal needs  &lt;/h2&gt;

&lt;ol&gt;
	&lt;li&gt;there should be a primitive level of loading (presumably &lt;tt&gt;load&lt;/tt&gt;) that just loads without question.&lt;/li&gt;
	&lt;li&gt;the api should be unified across the ns and direct forms. No more keywords or quoting! So &lt;tt&gt;(use foo)&amp;lt;/code&amp;gt; not &amp;lt;code&amp;gt;(use &apos;foo)&amp;lt;/code&amp;gt;. This makes &amp;lt;code&amp;gt;use&amp;lt;/code&amp;gt; et al macros, so there should also be new fn versions (maybe &amp;lt;code&amp;gt;use*&lt;/tt&gt;).&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;&lt;a name=&quot;Otherpossibilitiestodiscuss.&quot;&gt;&lt;/a&gt;Other possibilities to discuss.&lt;/h2&gt;

&lt;ol&gt;
	&lt;li&gt;Feature addressing the {{:like&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;:clone&amp;lt;/code&amp;gt; ideas from &lt;a href=&quot;http://onclojure.com/2010/02/17/managing-namespaces/&quot;&gt;http://onclojure.com/2010/02/17/managing-namespaces/&lt;/a&gt;. I think I would prefer a single new option &amp;lt;code&amp;gt;:clone&amp;lt;/code&amp;gt; which allows &amp;lt;code&amp;gt;:only&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;:exclude}} features as subspecifiers.&lt;/li&gt;
	&lt;li&gt;Convenience fn to unmap all names in a namespace?&lt;/li&gt;
&lt;/ol&gt;
</description>
                <environment></environment>
            <key id="13669">CLJ-272</key>
            <summary>load/ns/require/use overhaul</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>Thu, 18 Feb 2010 03:47:00 -0600</created>
                <updated>Tue, 28 Feb 2012 03:56:11 -0600</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>3</votes>
                        <watches>6</watches>
                        <comments>
                    <comment id="23522" author="importer" created="Tue, 24 Aug 2010 09:27:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/272&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/272&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23523" author="importer" created="Tue, 24 Aug 2010 09:27:00 -0500"  >&lt;p&gt;stu said: Suggestions from Volkan Yazici:&lt;/p&gt;

&lt;p&gt;Hi,&lt;/p&gt;

&lt;p&gt;I saw your &quot;load/ns/require/use overhaul&quot; ticket&lt;span class=&quot;error&quot;&gt;&amp;#91;1&amp;#93;&lt;/span&gt; and would like to&lt;br/&gt;
ask for a few extra overhaulings. I have a project called retop, and&lt;br/&gt;
here is its file hiearachy:&lt;/p&gt;

&lt;p&gt; tr/edu/bilkent/cs/retop.clj&lt;br/&gt;
 tr/edu/bilkent/cs/retop/km.clj&lt;br/&gt;
 tr/edu/bilkent/cs/retop/graph.clj&lt;br/&gt;
 tr/edu/bilkent/cs/retop/main.clj&lt;br/&gt;
 tr/edu/bilkent/cs/retop/util.clj&lt;/p&gt;

&lt;p&gt;In retop.clj, I have below ns definition.&lt;/p&gt;

&lt;p&gt; (ns tr.edu.bilkent.cs.retop&lt;br/&gt;
   (:gen-class)&lt;br/&gt;
   (:import&lt;br/&gt;
    (com.sun.jna&lt;br/&gt;
     Function&lt;br/&gt;
     Pointer)&lt;br/&gt;
    (com.sun.jna.ptr&lt;br/&gt;
     IntByReference)&lt;br/&gt;
    (tr.edu.bilkent.cs.patoh&lt;br/&gt;
     HyperGraph&lt;br/&gt;
     HyperGraphException&lt;br/&gt;
     Parititoning&lt;br/&gt;
     ParititoningParameters))&lt;br/&gt;
   (:load&lt;br/&gt;
    &quot;retop/util&quot;&lt;br/&gt;
    &quot;retop/km&quot;&lt;br/&gt;
    &quot;retop/graph&quot;&lt;br/&gt;
    &quot;retop/main&quot;))&lt;/p&gt;

&lt;p&gt;And in every .clj file in retop/ directory I have below in-ns in the&lt;br/&gt;
very first line.&lt;/p&gt;

&lt;p&gt; (in-ns &apos;tr.edu.bilkent.cs.retop)&lt;/p&gt;

&lt;p&gt;The problems with the ns decleration are:&lt;/p&gt;

&lt;p&gt;1) Most of the :import&apos;s in retop.clj only belong to a single .clj file.&lt;br/&gt;
  For instance,&lt;/p&gt;

&lt;p&gt;    (tr.edu.bilkent.cs.patoh&lt;br/&gt;
     HyperGraph&lt;br/&gt;
     HyperGraphException&lt;br/&gt;
     Parititoning&lt;br/&gt;
     ParititoningParameters)&lt;/p&gt;

&lt;p&gt;  imports are only used by graph.clj. Yep, I can add an (import ...)&lt;br/&gt;
  line just after the (in-ns ...), but wouldn&apos;t it be better if I can&lt;br/&gt;
  specify that in (in-ns ...) form?&lt;/p&gt;

&lt;p&gt;2) See (:load ...) clause in (ns ...) form. There are lots of&lt;br/&gt;
  unnecessary directory prefixes. I&apos;d be prefer something ala Common&lt;br/&gt;
  Lisp&apos;s defpackage:&lt;/p&gt;

&lt;p&gt;    (:load&lt;br/&gt;
     &quot;packages&quot;   ; packages.clj&lt;br/&gt;
     (&quot;retop&quot;&lt;br/&gt;
      &quot;util&quot;      ; retop/util.clj&lt;br/&gt;
      &quot;km&quot;        ; retop/km.clj&lt;br/&gt;
      &quot;graph&quot;     ; retop/graph.clj&lt;br/&gt;
      (&quot;graph&quot;&lt;br/&gt;
       &quot;foo&quot;      ; retop/graph/foo.clj&lt;br/&gt;
       &quot;bar)      ; retop/graph/bar.clj&lt;br/&gt;
      &quot;main&quot;))    ; retop/main.clj&lt;/p&gt;

&lt;p&gt;  Also, being able to use wildcards would be awesome.&lt;/p&gt;

&lt;p&gt;3) There are inconsistencies between macros and functions. For instance,&lt;br/&gt;
  consider:&lt;/p&gt;

&lt;p&gt;    (ns foo.bar.baz (:use mov))&lt;br/&gt;
    (in-ns &apos;foo.bar.baz)&lt;br/&gt;
    (use &apos;mov)&lt;/p&gt;

&lt;p&gt;  I&apos;d like to get rid of quotations in both cases.&lt;/p&gt;

&lt;p&gt;I&apos;m not sure if I&apos;m using the right tools and doing the right approach&lt;br/&gt;
for such a project. But if you agree with the above overhauling&lt;br/&gt;
requirements, I&apos;d like to see them appear in the same assembla ticket as&lt;br/&gt;
well.&lt;/p&gt;</comment>
                    <comment id="23524" author="importer" created="Tue, 24 Aug 2010 09:27:00 -0500"  >&lt;p&gt;stuart.sierra said: My requests:&lt;/p&gt;

&lt;p&gt;1. If writing macros that do not evaluate their arguments, provide function versions that do evaluate their arguments.&lt;/p&gt;

&lt;p&gt;2. Do not support prefix lists for loading Clojure namespaces.  It&apos;s hard to parse with external tools.&lt;/p&gt;

&lt;p&gt;3. Do not conflate importing Java classes with loading Clojure namespaces.  They are fundamentally different operations with different semantics.&lt;/p&gt;

&lt;p&gt;I have implemented some ideas in a macro called &quot;need&quot; at &lt;a href=&quot;http://github.com/stuartsierra/need&quot;&gt;http://github.com/stuartsierra/need&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="26026" author="stuart.sierra" created="Sun, 12 Dec 2010 16:08:30 -0600"  >&lt;p&gt;Further requests:&lt;/p&gt;

&lt;p&gt;Permit tools to read the &quot;ns&quot; declaration and statically determine the dependencies of a namespace, without evaluating any code.&lt;/p&gt;</comment>
                    <comment id="27883" author="pmoriarty" created="Tue, 28 Feb 2012 03:56:11 -0600"  >&lt;blockquote&gt;&lt;p&gt;Permit tools to read the &quot;ns&quot; declaration and statically determine the dependencies of a namespace, without evaluating any code.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;This would be great for building OSGi bundles where Bnd is currently not  much help.&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>

<item>
            <title>[CLJ-255] add denominator and numerator fns for Ratio</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-255</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;currently the only way to get the denominator or numerator is via the exposed fields of the Ratio class.&lt;/p&gt;

&lt;p&gt;On Thu, Jan 21, 2010 at 7:57 AM, Jacek Generowicz&lt;br/&gt;
&amp;lt;jacek.generowicz@googlemail.com&amp;gt; wrote:&lt;br/&gt;
&amp;gt; Clojure has a Ratio type; presumably there should be an easy way to&lt;br/&gt;
&amp;gt; find the numerator and denominator of a Ratio object.&lt;br/&gt;
&amp;gt;&lt;br/&gt;
&amp;gt; I didn&apos;t have much luck on clojure.org or with find-doc, but&lt;br/&gt;
&amp;gt;&lt;br/&gt;
&amp;gt;    (show 1/2)&lt;br/&gt;
&amp;gt;&lt;br/&gt;
&amp;gt; taught me that there are numerator and denominator methods on Ratio&apos;s&lt;br/&gt;
&amp;gt; underlying Java implementation, so I can now do:&lt;br/&gt;
&amp;gt;&lt;br/&gt;
&amp;gt;    (.numerator 1/2)     ; =&amp;gt; 1&lt;br/&gt;
&amp;gt;    (.denominator 1/2) ; =&amp;gt; 2&lt;br/&gt;
&amp;gt;&lt;br/&gt;
&amp;gt; Is there a more direct way? (Not that this is bad! But you can&apos;t&lt;br/&gt;
&amp;gt; use .numerator as a first-order function (though #(.numerator %) is&lt;br/&gt;
&amp;gt; still pretty damn good).)&lt;br/&gt;
&amp;gt;&lt;br/&gt;
&amp;gt; In general, do you have any hints on how to go about looking for&lt;br/&gt;
&amp;gt; useful Clojure functions which work with certain Clojure types ?&lt;br/&gt;
&amp;gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13652">CLJ-255</key>
            <summary>add denominator and numerator fns for Ratio</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="hiredman">Kevin Downey</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 29 Jan 2010 00:08:00 -0600</created>
                <updated>Tue, 28 Sep 2010 07:07:00 -0500</updated>
                    <resolved>Tue, 28 Sep 2010 07:07:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23427" author="importer" created="Tue, 28 Sep 2010 07:07:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/255&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/255&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
ratio-fns.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cyO2hUdrir3749eJe5aVNr/download/cyO2hUdrir3749eJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cyO2hUdrir3749eJe5aVNr/download/cyO2hUdrir3749eJe5aVNr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23428" author="importer" created="Tue, 28 Sep 2010 07:07:00 -0500"  >&lt;p&gt;hiredman said: [&lt;a href=&quot;file:cyO2hUdrir3749eJe5aVNr&quot;&gt;file:cyO2hUdrir3749eJe5aVNr&lt;/a&gt;]: add denominator and numerator fns&lt;/p&gt;</comment>
                    <comment id="23429" author="importer" created="Tue, 28 Sep 2010 07:07:00 -0500"  >&lt;p&gt;hiredman said: &lt;b&gt;Duplicated&lt;/b&gt; association with ticket #254 was added&lt;/p&gt;</comment>
                    <comment id="23430" author="importer" created="Tue, 28 Sep 2010 07:07:00 -0500"  >&lt;p&gt;hiredman said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:5772be9fc5ac9ddf92b727908c20b9aab971224a&amp;#93;&lt;/span&gt;]) numerator and denominator fns for Ratios, refs #255&lt;/p&gt;

&lt;p&gt;Signed-off-by: Rich Hickey &amp;lt;richhickey@gmail.com&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&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>

<item>
            <title>[CLJ-251] macroexpand should respect :inline</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-251</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;macroexpand and macroexpand-1 currently do not respect the :inline metadata of&lt;br/&gt;
functions.  For example you currently see:&lt;/p&gt;

&lt;p&gt; (macroexpand &apos;(+ 1 2))&lt;br/&gt;
 ;=&amp;gt; (+ 1 2)&lt;/p&gt;

&lt;p&gt;Instead, macroexpand should return something like:&lt;/p&gt;

&lt;p&gt; ;=&amp;gt; (. clojure.lang.Numbers (add 1 2))&lt;/p&gt;

&lt;p&gt;...depending of course on the exact definition of +&apos;s :inline fn.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13648">CLJ-251</key>
            <summary>macroexpand should respect :inline</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 28 Jan 2010 10:14:00 -0600</created>
                <updated>Fri, 7 Oct 2011 07:47:38 -0500</updated>
                    <resolved>Fri, 7 Oct 2011 07:47:38 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23418" author="importer" created="Tue, 24 Aug 2010 06:06:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/251&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/251&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>

<item>
            <title>[CLJ-238] Make re-pattern accept multiple arguments to concatenate them.</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-238</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;This would help concatenating multiple regular expressions. The attached patch simply converts all arguments to a string and then pass that string to re-pattern. Currently if you&apos;re trying to concatenate literal regular expressions, you&apos;re force to use the str function. It&apos;s not much extra code, but given the similarity between re-pattern and str, I thought it would be nice to have them behave the same way. e.g.:&lt;/p&gt;

&lt;p&gt;(re-pattern (apply str (map (partial format &quot;%s{%s}&quot;) &lt;span class=&quot;error&quot;&gt;&amp;#91;\a \b \c \d \e&amp;#93;&lt;/span&gt; (iterate inc 1))))&lt;br/&gt;
would become&lt;br/&gt;
(apply re-pattern (map (partial format &quot;%s{%s}&quot;) &lt;span class=&quot;error&quot;&gt;&amp;#91;\a \b \c \d \e&amp;#93;&lt;/span&gt; (iterate inc 1)))&lt;/p&gt;

&lt;p&gt;It only save one call to str, so it might not warrant the extra code in the end.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13635">CLJ-238</key>
            <summary>Make re-pattern accept multiple arguments to concatenate them.</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="budu">Nicolas Buduroi</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 5 Jan 2010 13:09:00 -0600</created>
                <updated>Fri, 7 Oct 2011 07:51:41 -0500</updated>
                    <resolved>Fri, 7 Oct 2011 07:51:41 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23378" author="importer" created="Tue, 28 Sep 2010 07:06:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/238&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/238&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-Changed-re-pattern-to-accept-multiple-arguments-to-c.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/barzR2-Jyr3OGheJe5aVNr/download/barzR2-Jyr3OGheJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/barzR2-Jyr3OGheJe5aVNr/download/barzR2-Jyr3OGheJe5aVNr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23379" author="importer" created="Tue, 28 Sep 2010 07:06:00 -0500"  >&lt;p&gt;richhickey said: Could you please put an example of what the enhancement would let you do, in the description? Thanks.&lt;/p&gt;</comment>
                    <comment id="23380" author="importer" created="Tue, 28 Sep 2010 07:06:00 -0500"  >&lt;p&gt;richhickey said: I don&apos;t see the need for this&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="10013">Test</customfieldvalue>

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

<item>
            <title>[CLJ-237] Adding a :only-keys destructuring option, that throws an exception if there&apos;s extra key(s).</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-237</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;While discussing the issue that prompted ticket [&lt;span class=&quot;error&quot;&gt;&amp;#91;ticket:236&amp;#93;&lt;/span&gt;] on clojure-dev, Richard Newman suggested modifying map destructuring to incorporate a :only-keys. It works exactly like :keys but raises an exception if the destructured map contains other keys. The attached patch shows a possible implementation.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13634">CLJ-237</key>
            <summary>Adding a :only-keys destructuring option, that throws an exception if there&apos;s extra key(s).</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="budu">Nicolas Buduroi</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 1 Jan 2010 20:04:00 -0600</created>
                <updated>Fri, 17 Feb 2012 14:15:44 -0600</updated>
                    <resolved>Fri, 17 Feb 2012 14:15:44 -0600</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23372" author="importer" created="Tue, 28 Sep 2010 07:05:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/237&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/237&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-Added-only-keys-destructuring-option-like-keys-but-t.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bEnEvg-I4r3OA7eJe5afGb/download/bEnEvg-I4r3OA7eJe5afGb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bEnEvg-I4r3OA7eJe5afGb/download/bEnEvg-I4r3OA7eJe5afGb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23373" author="importer" created="Tue, 28 Sep 2010 07:05:00 -0500"  >&lt;p&gt;budu said: [&lt;a href=&quot;file:bEnEvg-I4r3OA7eJe5afGb&quot;&gt;file:bEnEvg-I4r3OA7eJe5afGb&lt;/a&gt;]: Add :only-keys destructuring option&lt;/p&gt;</comment>
                    <comment id="23374" author="importer" created="Tue, 28 Sep 2010 07:05:00 -0500"  >&lt;p&gt;richhickey said: Could someone please review this patch? I&apos;m ok with the idea in general, but it seems strange that the :only test would only be available for (non-renaming) :keys destructuring&lt;/p&gt;</comment>
                    <comment id="23375" author="importer" created="Tue, 28 Sep 2010 07:05:00 -0500"  >&lt;p&gt;chouser@n01se.net said: One drawback to any such checking is it may prevent code written for a future version of the function that takes more named args from working at all with a previous version of the function.  For example &apos;ref&apos; now accepts :min-history.  Code that uses that now would probably work fine with versions of ref that didn&apos;t support that knob, but if they checked to prevent extra args they would fail unnecessarily.&lt;/p&gt;</comment>
                    <comment id="23376" author="importer" created="Tue, 28 Sep 2010 07:05:00 -0500"  >&lt;p&gt;budu said: Good point, didn&apos;t think about that! We could recommend the use of :keys in early development and :only-keys when APIs become very stable.&lt;/p&gt;</comment>
                    <comment id="23377" author="importer" created="Tue, 28 Sep 2010 07:05:00 -0500"  >&lt;p&gt;richhickey said: I don&apos;t see the need for this&lt;/p&gt;</comment>
                    <comment id="27750" author="stuart.sierra" created="Fri, 17 Feb 2012 14:15:44 -0600"  >&lt;p&gt;Declined. There has been limited support for this ticket. It changes the concept of destructuring to include something more like validation, which it was not intended to support.&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>

<item>
            <title>[CLJ-233] better error reporting of nonexistent var</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-233</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;simple improvement to error message when referencing a var that doesn&apos;t exist.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13630">CLJ-233</key>
            <summary>better error reporting of nonexistent var</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>Thu, 31 Dec 2009 11:08:00 -0600</created>
                <updated>Wed, 29 Sep 2010 05:29:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23363" author="importer" created="Wed, 29 Sep 2010 05:29:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/233&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/233&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23364" author="importer" created="Wed, 29 Sep 2010 05:29:00 -0500"  >&lt;p&gt;chouser@n01se.net said: Stuart, I don&apos;t see a patch attached.&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>

<item>
            <title>[CLJ-213] Invariants and the STM</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-213</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;(ticket requested here &lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/119311e89fa46806/4903ce25ff6deaa6#4903ce25ff6deaa6&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/119311e89fa46806/4903ce25ff6deaa6#4903ce25ff6deaa6&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;The general idea is to declare invariants inside a transaction and, when at commit time an invariant doesn&apos;t hold anymore, the transaction retries.&lt;br/&gt;
So it can both act as a kind of soft ensure or to specify actions that &quot;partially commute&quot;.&lt;br/&gt;
Thus it would enable coarser refs.&lt;/p&gt;

&lt;p&gt;See the attached file for quick prototype.&lt;/p&gt;

&lt;p&gt;User code would looks like:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(invariant (@world :key))
(commute world update-in [:key] val-transform-fn)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This means the commute will occur only if (@world :key) returns the same value in-transaction and at commit point.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13610">CLJ-213</key>
            <summary>Invariants and the STM</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>Tue, 1 Dec 2009 06:29:00 -0600</created>
                <updated>Tue, 24 Aug 2010 07:23:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23280" author="importer" created="Tue, 24 Aug 2010 07:23:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/213&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/213&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
invariants.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dd4kUS3MWr3QvMeJe5aVNr/download/dd4kUS3MWr3QvMeJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dd4kUS3MWr3QvMeJe5aVNr/download/dd4kUS3MWr3QvMeJe5aVNr&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>

<item>
            <title>[CLJ-212] Direct linking breaks clojure.contrib.repl-ln.</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-212</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Direct linking (commit 4d08439a9cf79f34a730714f12edd5959aae126e) breaks clojure.contrib.repl-ln.&lt;/p&gt;

&lt;p&gt;To reproduce, run the following in the standard REPL:&lt;br/&gt;
  (require &apos;clojure.contrib.repl-ln) (clojure.contrib.repl-ln/repl)&lt;/p&gt;

&lt;p&gt;Expected output (obtained with commit 98366f353463afdc195b9b8fdf9d220bca7d0d6a):&lt;br/&gt;
nil&lt;br/&gt;
1:2 user=&amp;gt; &lt;/p&gt;

&lt;p&gt;Result with commit 4d08439a9cf79f34a730714f12edd5959aae126e:&lt;br/&gt;
nil&lt;br/&gt;
java.lang.NullPointerException (NO_SOURCE_FILE:0)&lt;/p&gt;

&lt;p&gt;The NullPointerException happens in clojure.contrib.repl-ln/prompt-hook where (&lt;b&gt;private&lt;/b&gt; :prompt) returns nil.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13609">CLJ-212</key>
            <summary>Direct linking breaks clojure.contrib.repl-ln.</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Mon, 30 Nov 2009 01:57:00 -0600</created>
                <updated>Tue, 24 Aug 2010 05:22:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 05:22:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23279" author="importer" created="Tue, 24 Aug 2010 05:22:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/212&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/212&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>

<item>
            <title>[CLJ-200] Extend cond to support inline let, much like for</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-200</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;I find it occasionally very useful to do a few tests in a cond, then introduce some new symbols (for both clarity and efficiency) that can be referenced in later tests (or matching expressions).  This parallels similar functionality inside the for macro, where the :let keyword is matched against a vector of symbol bindings and forms an implicit let around the remainder of the comprehension.&lt;/p&gt;

&lt;p&gt;I&apos;ll be adding a patch for this shortly.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13597">CLJ-200</key>
            <summary>Extend cond to support inline let, much like for</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="1" iconUrl="http://dev.clojure.org/jira/images/icons/status_open.gif">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="markengelberg">Mark Engelberg</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Sun, 18 Oct 2009 18:15:00 -0500</created>
                <updated>Sun, 2 Dec 2012 19:35:37 -0600</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>1</votes>
                        <watches>3</watches>
                        <comments>
                    <comment id="23224" author="importer" created="Tue, 24 Aug 2010 13:51:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/200&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/200&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23225" author="importer" created="Tue, 24 Aug 2010 13:51:00 -0500"  >&lt;p&gt;hlship said: Trickier than I thought because cond is really wired into other fundamentals, like let.&lt;/p&gt;</comment>
                    <comment id="23226" author="importer" created="Tue, 24 Aug 2010 13:51:00 -0500"  >&lt;p&gt;cgrand said: Howard, what do you think of &lt;a href=&quot;http://gist.github.com/432712&quot;&gt;http://gist.github.com/432712&lt;/a&gt; ?&lt;/p&gt;</comment>
                    <comment id="30010" author="markengelberg" created="Fri, 23 Nov 2012 02:33:47 -0600"  >&lt;p&gt;Patch cond-let-clauses.diff on 23/Nov/12 adds inline :let clauses to cond, implementing &lt;a href=&quot;http://dev.clojure.org/jira/browse/CLJ-200&quot; title=&quot;Extend cond to support inline let, much like for&quot;&gt;CLJ-200&lt;/a&gt;.  The code is based off of code by cgrand, with some tweaks so the implementation only relies on constructs defined earlier in core.clj, since when cond is defined, things aren&apos;t yet fully bootstrapped.  Also added a test to control.clj.&lt;/p&gt;</comment>
                    <comment id="30012" author="cgrand" created="Fri, 23 Nov 2012 03:06:21 -0600"  >&lt;p&gt;Some comments: the docstring is missing, I believe you don&apos;t have to modify the original cond (except the docstring maybe), just redefine it later on once most of the language is defined &amp;#8211; a bit like what is done for let for example.&lt;/p&gt;

&lt;p&gt;There is still the unlikely eventuality that some code uses :let as :else. What about shipping a cond which complains on keywords (in test position) other than :else? &lt;/p&gt;</comment>
                    <comment id="30014" author="markengelberg" created="Fri, 23 Nov 2012 03:47:24 -0600"  >&lt;p&gt;cond-let-clauses-with-docstring.diff contains the same patches as cond-let-clauses, but includes the original docstring for cond along with an additional sentence about the :let bindings.&lt;/p&gt;</comment>
                    <comment id="30015" author="markengelberg" created="Fri, 23 Nov 2012 03:54:38 -0600"  >&lt;p&gt;Cgrand, I did see your example of redefining cond after most of the language is defined, but since I was able to figure out how to do it in the proper place, that makes the :let bindings available for users of cond downstream and avoids any unforeseen complications that might come from rebinding.  &lt;/p&gt;

&lt;p&gt;As for your other point, I think it is highly improbable that someone would have used :let in the :else position.  However I can imagine someone intentionally using something like :true or :default.  I think the idea of warning for other keywords is actually more likely to cause complications than the unlikely problem it is meant to solve.&lt;/p&gt;

&lt;p&gt;I did resubmit the patch with the docstring restored.  Thanks for pointing out that problem.  I&apos;m excited about this patch &amp;#8211; I use :let bindings within the cond in my own code all the time.  Thanks again for the blog post that started me on that path.&lt;/p&gt;</comment>
                    <comment id="30016" author="cgrand" created="Fri, 23 Nov 2012 04:13:00 -0600"  >&lt;p&gt;True, it&apos;s :unlikely for :let to happen. &lt;br/&gt;
However once :let is officially blessed, it may be better to provision for future other &quot;special&quot; keywords and thus to warn on &quot;unsupported&quot; keywords. Plus it will help out-of-order typists (like myself) to catch earlier a :elt instead of a :let &lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/smile.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;br/&gt;
This is only my point of view. Thanks for trying to get :let in cond supported.&lt;/p&gt;</comment>
                    <comment id="30103" author="jafingerhut" created="Thu, 29 Nov 2012 20:46:50 -0600"  >&lt;p&gt;Mark, could you remove the obsolete earlier patch now that you have added the one with the doc string?  Instructions for removing patches are under the heading &quot;Removing Patches&quot; on this page: &lt;a href=&quot;http://dev.clojure.org/display/design/JIRA+workflow&quot;&gt;http://dev.clojure.org/display/design/JIRA+workflow&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="30104" author="markengelberg" created="Thu, 29 Nov 2012 22:50:09 -0600"  >&lt;p&gt;Done.&lt;/p&gt;</comment>
                    <comment id="30105" author="jafingerhut" created="Fri, 30 Nov 2012 01:24:13 -0600"  >&lt;p&gt;I haven&apos;t figured out what is going wrong yet.  I can apply the patch cond-let-clauses-with-docstring.diff to the latest Clojure master just fine.  I can do &quot;ant jar&quot; and it will build a jar.  When I do &quot;ant&quot;, it fails with the new test for cond with :let, throwing a StackOverflowException.  I can enter that same form into the REPL and it evaluates just as the test says it should.  I can comment out that new test and all of the rest pass.  But the new test doesn&apos;t pass when inside of the control.clj file.  Anyone know why?&lt;/p&gt;</comment>
                    <comment id="30106" author="cgrand" created="Fri, 30 Nov 2012 04:54:30 -0600"  >&lt;p&gt;It&apos;s because of the brutal replacement performed by test/are: the placeholders for this are form are x and y but in Mark&apos;s test there are used as local names and are tries to substitute them recursively... &lt;br/&gt;
If one changes the local names to a and b for example it works.&lt;/p&gt;</comment>
                    <comment id="30136" author="markengelberg" created="Sun, 2 Dec 2012 08:20:13 -0600"  >&lt;p&gt;cond-let-clauses-fixed-test.diff on 02/Dec/12 contains the same patch, but with the x,y locals in the test case changed to a,b so that it works properly in the are clause which uses x and y.&lt;/p&gt;</comment>
                    <comment id="30137" author="markengelberg" created="Sun, 2 Dec 2012 08:27:48 -0600"  >&lt;p&gt;On Windows, I can&apos;t get Clojure&apos;s test suite task to work, either via ant or maven, which has made it difficult for me to verify the part of the patch that applies to the test suite works as expected; I had tested it as best I could in the REPL, using a version of Clojure built with the patch applied, but using this process, I missed the subtle interaction between are and the locals in the test case.  Sorry about that.  If someone can double-check that the test suite task now works with the newest patch, that would be great, and then I&apos;ll go ahead and remove the obsoleted patch.  Thanks.&lt;/p&gt;</comment>
                    <comment id="30141" author="jafingerhut" created="Sun, 2 Dec 2012 18:29:48 -0600"  >&lt;p&gt;clj-200-cond-let-clauses-fixed-test-v2-patch.txt dated Dec 2 2012 is identical to Mark Engelberg&apos;s cond-let-clauses-fixed-test.diff of the same date, except it applies cleanly to the latest Clojure master.&lt;/p&gt;

&lt;p&gt;I&apos;ve verified that it compiles and passes all tests with latest Clojure master as of this date.&lt;/p&gt;

&lt;p&gt;Mark, I&apos;ve made sure to keep your name in the patch, since you wrote it.  You should be able to remove your two attachments now, so the screener won&apos;t be confused which patch should be examined.&lt;/p&gt;</comment>
                    <comment id="30142" author="jafingerhut" created="Sun, 2 Dec 2012 18:31:37 -0600"  >&lt;p&gt;Mark, besides general issues with Windows not being used much (or maybe not at all?) by Clojure developers, there is the issue right now filed as &lt;a href=&quot;http://dev.clojure.org/jira/browse/CLJ-1076&quot; title=&quot;pprint tests fail on Windows, expecting \n&quot;&gt;CLJ-1076&lt;/a&gt; that not all tests pass when run on Windows due to CR-LF line ending differences that cause several Clojure tests to fail, regardless of whether you use ant or maven to run them.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11735" name="clj-200-cond-let-clauses-fixed-test-v2-patch.txt" size="2280" author="jafingerhut" created="Sun, 2 Dec 2012 18:29:48 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[CLJ-190] enhance with-open to be extensible with a new close multimethod</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-190</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Discussion: &lt;a href=&quot;http://groups.google.com/group/clojure/browse_thread/thread/8e4e56f6fc65cc8e/618a893a5b2a5410&quot;&gt;http://groups.google.com/group/clojure/browse_thread/thread/8e4e56f6fc65cc8e/618a893a5b2a5410&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Currently, with-open calls .close when it&apos;s finished.  I&apos;d like it to have a (defmulti close type) so it&apos;s behavior is extensible.  A standard method could be defined for java.io.Closeable and a :default method with no type hint.  I&apos;ve come across a few cases where some external library defines what is essentially a close method but names it shutdown or disable, etc., and adding my own &quot;defmethod close&quot; would be much easier than rewriting with-open.  This would also allow people to eliminate reflection for classes like sql Connection that were created before Closeable.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13587">CLJ-190</key>
            <summary>enhance with-open to be extensible with a new close multimethod</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>Sun, 13 Sep 2009 11:31:00 -0500</created>
                <updated>Fri, 23 Dec 2011 06:50:59 -0600</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>2</watches>
                        <comments>
                    <comment id="23185" author="importer" created="Tue, 24 Aug 2010 04:30:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/190&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/190&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
clojure-190-with-open.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/ca27R6Ojur3PQ0eJe5afGb/download/ca27R6Ojur3PQ0eJe5afGb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/ca27R6Ojur3PQ0eJe5afGb/download/ca27R6Ojur3PQ0eJe5afGb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23186" author="importer" created="Tue, 24 Aug 2010 04:30:00 -0500"  >&lt;p&gt;mikehinchey said: [&lt;a href=&quot;file:ca27R6Ojur3PQ0eJe5afGb&quot;&gt;file:ca27R6Ojur3PQ0eJe5afGb&lt;/a&gt;]: fix adds close method and tests&lt;/p&gt;</comment>
                    <comment id="23187" author="importer" created="Tue, 24 Aug 2010 04:30:00 -0500"  >&lt;p&gt;mikehinchey said: Note, I only defined methods for :default (reflection of .close) and Closeable, not sql or the numerous other classes in java that should be Closeable but are not.  Maybe clojure.contrib.sql and other such libraries should define related close methods.&lt;/p&gt;</comment>
                    <comment id="23188" author="importer" created="Tue, 24 Aug 2010 04:30:00 -0500"  >&lt;p&gt;richhickey said: I want to hold off on this until scopes are in&lt;/p&gt;</comment>
                    <comment id="27494" author="tsdh" created="Fri, 23 Dec 2011 06:50:59 -0600"  >&lt;p&gt;Probably better implemented using a protocol.  See &lt;a href=&quot;http://dev.clojure.org/jira/browse/CLJ-308&quot;&gt;http://dev.clojure.org/jira/browse/CLJ-308&lt;/a&gt;&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="10008">Not Approved</customfieldvalue>

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

<item>
            <title>[CLJ-176] structs printed with *print-dup* true cannot be read</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-176</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(defstruct thing :a :b)
(def my-thing (struct thing 1 2))
(def s (binding [*print-dup* &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;] (pr-str my-thing)))
s 
;;=&amp;gt; &lt;span class=&quot;code-quote&quot;&gt;&quot;#=(clojure.lang.PersistentStructMap/create {:a 1, :b 2})&quot;&lt;/span&gt;
(read-string s)
;;=&amp;gt; java.lang.IllegalArgumentException:
;;   No matching method found: create&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13573">CLJ-176</key>
            <summary>structs printed with *print-dup* true cannot be read</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 18 Aug 2009 11:11:00 -0500</created>
                <updated>Tue, 24 Aug 2010 06:14:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 06:14:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23128" author="importer" created="Tue, 24 Aug 2010 06:14:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/176&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/176&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="23129" author="importer" created="Tue, 24 Aug 2010 06:14:00 -0500"  >&lt;p&gt;stu said: This is not going to be fixed in the short or medium term. Please ping me if you have a compelling use case though.&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>

<item>
            <title>[CLJ-153] Suggest adding set-precision! API to accompany with-precision</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-153</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Ticket #137 makes &lt;tt&gt;&lt;b&gt;math-context&lt;/b&gt;&amp;lt;/code&amp;gt; settable at the REPL. However, &amp;lt;code&amp;gt;&lt;b&gt;math-context&lt;/b&gt;&lt;/tt&gt; is not a public name in Clojure.&lt;/p&gt;

&lt;p&gt;The related public function is &lt;tt&gt;with-precision&amp;lt;/code&amp;gt; which works by pushing a new binding for &amp;lt;code&amp;gt;&lt;b&gt;math-context&lt;/b&gt;&amp;lt;/code&amp;gt;. This ticket suggests adding &amp;lt;code&amp;gt;set-precision!&amp;lt;/code&amp;gt; to Clojure&apos;s public API. Its effect would be the same as &amp;lt;code&amp;gt;with-precision&amp;lt;/code&amp;gt;, but accomplished by using &amp;lt;code&amp;gt;set!&amp;lt;/code&amp;gt; on the current &amp;lt;code&amp;gt;&lt;b&gt;math-context&lt;/b&gt;&lt;/tt&gt; binding rather than by pushing a new binding.&lt;/p&gt;

&lt;p&gt;Chouser suggests that we also add a doc string for &lt;tt&gt;&lt;b&gt;math-context&lt;/b&gt;&amp;lt;/code&amp;gt; noting that it is private and pointing the user to &amp;lt;code&amp;gt;with-precision&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;set-precision!&lt;/tt&gt;. I agree.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13550">CLJ-153</key>
            <summary>Suggest adding set-precision! API to accompany with-precision</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>Sun, 12 Jul 2009 19:58:00 -0500</created>
                <updated>Tue, 24 Aug 2010 00:55:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="23012" author="importer" created="Tue, 24 Aug 2010 00:55:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/153&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/153&lt;/a&gt;&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="10008">Not Approved</customfieldvalue>

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

<item>
            <title>[CLJ-150] Doc for array-map should mention its characteristics/caveats</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-150</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Doc for array-map should mention its characteristics: preserves order of keys, linear O&lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/thumbs_down.gif&quot; height=&quot;19&quot; width=&quot;19&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; search so appropriate only for small maps, operations on array-maps return hash-maps.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13547">CLJ-150</key>
            <summary>Doc for array-map should mention its characteristics/caveats</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>Fri, 10 Jul 2009 15:11:00 -0500</created>
                <updated>Tue, 24 Aug 2010 04:54:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22998" author="importer" created="Tue, 24 Aug 2010 04:54:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/150&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/150&lt;/a&gt;&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="10008">Not Approved</customfieldvalue>

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

<item>
            <title>[CLJ-148] Poor reporting of symbol conflicts when using (ns)</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-148</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;I have a module that includes pprint and my own utils.&lt;/p&gt;

&lt;p&gt;When com.howard.lewisship.cascade.dom/write was changed from private to public I get the following error:&lt;/p&gt;

&lt;p&gt;java.lang.IllegalStateException: write already refers to: #&apos;clojure.contrib.pprint/write in namespace: com.howardlewisship.cascade.test-views (test_views.clj:0)&lt;/p&gt;

&lt;p&gt;(ns com.howardlewisship.cascade.test-views ; line 15&lt;br/&gt;
  (:use&lt;br/&gt;
   (clojure.contrib test-is pprint duck-streams)&lt;br/&gt;
   (app1 views fragments)&lt;br/&gt;
   (com.howardlewisship.cascade config dom view-manager)&lt;br/&gt;
   com.howardlewisship.cascade.internal.utils))&lt;/p&gt;

&lt;p&gt;That line number is wrong but better yet, identifying the true conflict (com.howard.lewisship.cascade.dom/write) would be even more important.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13545">CLJ-148</key>
            <summary>Poor reporting of symbol conflicts when using (ns)</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>Fri, 10 Jul 2009 00:08:00 -0500</created>
                <updated>Tue, 28 Jun 2011 18:42:50 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>1</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22990" author="importer" created="Tue, 24 Aug 2010 03:54:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/148&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/148&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22991" author="importer" created="Tue, 24 Aug 2010 03:54:00 -0500"  >&lt;p&gt;scgilardi said: It&apos;s saying that the symbol com.howardlewisship.cascade.test-views/write already resolves to #&#65533;&#65533;&#65533;clojure.contrib.pprint/write, so you can&apos;t def a new write in com.howardlewisship.cascade.test-views.&lt;/p&gt;

&lt;p&gt;What do you propose for an alternate wording of the error message here?&lt;/p&gt;</comment>
                    <comment id="26430" author="rosejn" created="Thu, 12 May 2011 09:49:03 -0500"  >&lt;p&gt;I think the issue is that only one side of the conflict is reported in the error, so if you get this kind of error in the middle of a large project it can be hard to figure out which namespace is conflicting.  Take a toy example:&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (ns foo)&lt;br/&gt;
foo=&amp;gt; (def foobar 42)&lt;br/&gt;
foo=&amp;gt; (ns bar)&lt;br/&gt;
bar=&amp;gt; (def foobar 0)&lt;br/&gt;
bar=&amp;gt; (ns problem)&lt;br/&gt;
problem=&amp;gt; (refer &apos;foo)&lt;br/&gt;
problem=&amp;gt; (refer &apos;bar)&lt;br/&gt;
java.lang.IllegalStateException: foobar already refers to: #&apos;foo/foobar in namespace: problem (NO_SOURCE_FILE:0)&lt;/p&gt;

&lt;p&gt;In this case it would be best if the error said something like:&lt;/p&gt;

&lt;p&gt;&quot;Conflict referring to #&apos;bar/foobar in #&amp;lt;Namespace problem&amp;gt; because foobar already refers to: #&apos;foo/foobar.&quot;&lt;/p&gt;

&lt;p&gt;This way the error message clearly identifies the location of the conflict, and the locations of the two conflicting vars.&lt;/p&gt;

&lt;p&gt;Hopefully this helps clarify.  I think I see where to fix it in warnOrFailOnReplace on line 88 of src/jvm/clojure/lang/Namespace.java, and this reminds me I need to send in a CA so I can pitch in next time...&lt;/p&gt;</comment>
                    <comment id="26539" author="aaron" created="Tue, 28 Jun 2011 18:42:50 -0500"  >&lt;p&gt;It looks like the true conflict is in test-views, not in dom. A small example of the line number breakage showing the problem on master (1.3) would be very helpful.&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="10008">Not Approved</customfieldvalue>

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

<item>
            <title>[CLJ-147] Bug: Compile-time NPE on set! of non-existent field [for 1.0]</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-147</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;The bug described in #142 also exists in Clojure 1.0.0&lt;/p&gt;</description>
                <environment></environment>
            <key id="13544">CLJ-147</key>
            <summary>Bug: Compile-time NPE on set! of non-existent field [for 1.0]</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="3">Duplicate</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 9 Jul 2009 23:15:00 -0500</created>
                <updated>Mon, 15 Nov 2010 12:49:00 -0600</updated>
                    <resolved>Fri, 12 Nov 2010 10:07:06 -0600</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22988" author="importer" created="Tue, 24 Aug 2010 06:54:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/147&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/147&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22989" author="importer" created="Tue, 24 Aug 2010 06:54:00 -0500"  >&lt;p&gt;chouser@n01se.net said: &lt;b&gt;Parent&lt;/b&gt; association with ticket #142 was added&lt;/p&gt;</comment>
                    <comment id="25932" author="aredington" created="Fri, 12 Nov 2010 10:07:07 -0600"  >&lt;p&gt;This duplicate of #142 has been resolved.&lt;/p&gt;

&lt;p&gt;Latest from head:&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (set! (.foo &quot;fred&quot;) 47)&lt;br/&gt;
IllegalArgumentException No matching field found: foo for class java.lang.String clojure.lang.Reflector.setInstanceField (Reflector.java:257)&lt;br/&gt;
user=&amp;gt; &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="10008">Not Approved</customfieldvalue>

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

<item>
            <title>[CLJ-140] Single :tag for type hints conflates value&apos;s type with type of return value from an invoke</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-140</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;The value of a Var can be operated on directly, or, if it is a fn, it can be invoked and the resulting value operated on.  :tag metadata on a Var is used to provide a type hint to the compiler to avoid reflection.  Having a single metadata key for this two distinct uses makes it possible (even easy, if unlikely) to create a situation where type-hinting the value causes a ClassCastException on an operation on the invocation return value, or the reverse.  The only obvious solution is two use different keys for the two uses.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13537">CLJ-140</key>
            <summary>Single :tag for type hints conflates value&apos;s type with type of return value from an invoke</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, 1 Jul 2009 21:55:00 -0500</created>
                <updated>Tue, 24 Aug 2010 03:51:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22956" author="importer" created="Tue, 24 Aug 2010 03:51:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/140&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/140&lt;/a&gt;&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="10008">Not Approved</customfieldvalue>

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

<item>
            <title>[CLJ-132] Agents printed at the REPL do not always reflect their value</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-132</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Starting with a fresh REPL and entering the following:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(def counter (agent 0))
(defn add1 [x] (inc x))
(send counter add1)
;; repeat many times
(send counter add1)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The representation printed at the REPL will not always display the correct value for the agent (e.g. the second call to `send` would print #&amp;lt;Agent@743fba: 1&amp;gt;).  This appears to happen only in the first few calls to `send` before the value eventually &quot;catches up&quot;.  This behavior of course never occurs with `send-off`.  This appears to only affect the printed value and not the actual value, but can still cause confusion.&lt;/p&gt;

&lt;p&gt;My setup is as follows:&lt;br/&gt;
Mac OSX 10.5&lt;br/&gt;
Clojure 1.0.0&lt;br/&gt;
Running with `java -server -cp $CP jline.ConsoleRunner clojure.lang.Repl $*` where $CP points to clojure.jar, clojure-contrib.jar, and jline.jar&lt;/p&gt;

&lt;p&gt;This also occurs with a fresh build of Clojure 1.1.0-alpha-SNAPSHOT from github.&lt;/p&gt;

&lt;p&gt;-m&lt;/p&gt;</description>
                <environment></environment>
            <key id="13529">CLJ-132</key>
            <summary>Agents printed at the REPL do not always reflect their value</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 19 Jun 2009 16:55:00 -0500</created>
                <updated>Tue, 24 Aug 2010 07:46:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 07:46:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22911" author="importer" created="Tue, 24 Aug 2010 07:46:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/132&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/132&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22912" author="importer" created="Tue, 24 Aug 2010 07:46:00 -0500"  >&lt;p&gt;stu said: I don&apos;t think this is a bug &amp;#8211; there is no &quot;correct value for the agent&quot; as seen from the calling thread. There is a race condition when viewing agents at the REPL, and this is by design.&lt;/p&gt;</comment>
                    <comment id="22913" author="importer" created="Tue, 24 Aug 2010 07:46:00 -0500"  >&lt;p&gt;fogus said: I understand why it happens, but it might be worthwhile to at least document this condition and/or consider removing the print of the value.  In some cases reporting nothing is better than potentially incorrect information.  Or is it enough to just say, &quot;it&apos;s correct eventually or at least most of the time&quot;?&lt;/p&gt;

&lt;p&gt;-m&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="10008">Not Approved</customfieldvalue>

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

<item>
            <title>[CLJ-130] Namespace metadata lost in AOT compile</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-130</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;For example, the namespace @clojure.contrib.def@ has metadata for doc and author.&lt;/p&gt;

&lt;p&gt;We see this when we load the file directly from source:&lt;br/&gt;
&amp;lt;pre&amp;gt;&lt;br/&gt;
&amp;lt;code&amp;gt;&lt;br/&gt;
 tom@goya:~/src/clj$ java -cp clojure/clojure.jar:clojure-contrib/src clojure.lang.Repl&lt;br/&gt;
 Clojure 1.1.0-alpha-SNAPSHOT&lt;br/&gt;
 user=&amp;gt; (load &quot;clojure/contrib/def&quot;)&lt;br/&gt;
 nil&lt;br/&gt;
 user=&amp;gt; (find-ns &apos;clojure.contrib.def)     &lt;br/&gt;
 #&amp;lt;Namespace clojure.contrib.def&amp;gt;&lt;br/&gt;
 user=&amp;gt; ^(find-ns &apos;clojure.contrib.def)&lt;br/&gt;
 {:author &quot;Stephen C. Gilardi&quot;, :doc &quot;def.clj provides variants of def that make including doc strings and\nmaking private definitions more succinct.&quot;}&lt;br/&gt;
 user=&amp;gt; &lt;br/&gt;
&amp;lt;/code&amp;gt;&lt;br/&gt;
&amp;lt;/pre&amp;gt;&lt;/p&gt;

&lt;p&gt;But if we load the file from the jar where it&apos;s been compiled, the metadata is lost:&lt;br/&gt;
&amp;lt;pre&amp;gt;&lt;br/&gt;
&amp;lt;code&amp;gt;&lt;br/&gt;
 tom@goya:~/src/clj$ java -cp clojure/clojure.jar:clojure-contrib/clojure-contrib.jar clojure.lang.Repl&lt;br/&gt;
 Clojure 1.1.0-alpha-SNAPSHOT&lt;br/&gt;
 user=&amp;gt; (use &apos;clojure.contrib.def)&lt;br/&gt;
 nil&lt;br/&gt;
 user=&amp;gt; (find-ns &apos;clojure.contrib.def)&lt;br/&gt;
 #&amp;lt;Namespace clojure.contrib.def&amp;gt;&lt;br/&gt;
 user=&amp;gt; ^(find-ns &apos;clojure.contrib.def)&lt;br/&gt;
 nil&lt;br/&gt;
 user=&amp;gt; &lt;br/&gt;
&amp;lt;/code&amp;gt;&lt;br/&gt;
&amp;lt;/pre&amp;gt;&lt;/p&gt;

&lt;p&gt;Even if we use @load@, we don&apos;t see metadata on the item:&lt;br/&gt;
&amp;lt;pre&amp;gt;&lt;br/&gt;
&amp;lt;code&amp;gt;&lt;br/&gt;
 tom@goya:~/src/clj$ java -cp clojure/clojure.jar:clojure-contrib/clojure-contrib.jar clojure.lang.Repl&lt;br/&gt;
 Clojure 1.1.0-alpha-SNAPSHOT&lt;br/&gt;
 user=&amp;gt; (load &quot;clojure/contrib/def&quot;)&lt;br/&gt;
 nil&lt;br/&gt;
 user=&amp;gt; (find-ns &apos;clojure.contrib.def)&lt;br/&gt;
 #&amp;lt;Namespace clojure.contrib.def&amp;gt;&lt;br/&gt;
 user=&amp;gt; ^(find-ns &apos;clojure.contrib.def)&lt;br/&gt;
 nil&lt;br/&gt;
 user=&amp;gt; &lt;br/&gt;
&amp;lt;/code&amp;gt;&lt;br/&gt;
&amp;lt;/pre&amp;gt;&lt;/p&gt;


&lt;p&gt;The jar isn&apos;t the problem, for if we use the slim jar (without the AOT&lt;br/&gt;
class files), we see that the metadata is fine: &lt;br/&gt;
&amp;lt;pre&amp;gt;&lt;br/&gt;
&amp;lt;code&amp;gt;&lt;br/&gt;
 tom@goya:~/src/clj$ java -cp clojure/clojure.jar:clojure-contrib/clojure-contrib-slim.jar clojure.lang.Repl&lt;br/&gt;
 Clojure 1.1.0-alpha-SNAPSHOT&lt;br/&gt;
 user=&amp;gt; (use &apos;clojure.contrib.def)&lt;br/&gt;
 nil&lt;br/&gt;
 user=&amp;gt; (find-ns &apos;clojure.contrib.def)&lt;br/&gt;
 #&amp;lt;Namespace clojure.contrib.def&amp;gt;&lt;br/&gt;
 user=&amp;gt; ^(find-ns &apos;clojure.contrib.def)&lt;br/&gt;
 {:author &quot;Stephen C. Gilardi&quot;, :doc &quot;def.clj provides variants of def that make including doc strings and\nmaking private definitions more succinct.&quot;}&lt;br/&gt;
 user=&amp;gt; &lt;br/&gt;
&amp;lt;/code&amp;gt;&lt;br/&gt;
&amp;lt;/pre&amp;gt;&lt;/p&gt;

&lt;p&gt;This seems to be true usually, but not always. For example the&lt;br/&gt;
metadata on the pretty print namespace is just fine from the AOT version:&lt;br/&gt;
&amp;lt;pre&amp;gt;&lt;br/&gt;
&amp;lt;code&amp;gt;&lt;br/&gt;
 tom@goya:~/src/clj$ java -cp clojure/clojure.jar:clojure-contrib/clojure-contrib.jar clojure.lang.Repl&lt;br/&gt;
 Clojure 1.1.0-alpha-SNAPSHOT&lt;br/&gt;
 user=&amp;gt; (use &apos;clojure.contrib.pprint)&lt;br/&gt;
 nil&lt;br/&gt;
 user=&amp;gt; (find-ns &apos;clojure.contrib.pprint)&lt;br/&gt;
 #&amp;lt;Namespace clojure.contrib.pprint&amp;gt;&lt;br/&gt;
 user=&amp;gt; ^(find-ns &apos;clojure.contrib.pprint)&lt;br/&gt;
 {:author &quot;Tom Faulhaber&quot;, :doc &quot;This module comprises two elements:\n1) A pretty printer for Clojure data structures, implemented in the function \&quot;pprint\&quot;\n2) A Common Lisp compatible format function, implemented as \&quot;cl-format\&quot; because\n   Clojure is using the name \&quot;format\&quot; for its own format.\n\nComplete documentation is available on the wiki at the contrib google code site.&quot;, :see-also [&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;quot;PrettyPrinting&amp;quot; &amp;quot;Documentation for the pretty printer&amp;quot;&amp;#93;&lt;/span&gt; &lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;quot;CommonLispFormat&amp;quot; &amp;quot;Documentation for Common Lisp format function&amp;quot;&amp;#93;&lt;/span&gt;]}&lt;br/&gt;
 user=&amp;gt; &lt;br/&gt;
&amp;lt;/code&amp;gt;&lt;br/&gt;
&amp;lt;/pre&amp;gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="13527">CLJ-130</key>
            <summary>Namespace metadata lost in AOT compile</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="3" iconUrl="http://dev.clojure.org/jira/images/icons/status_inprogress.gif">In Progress</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Fri, 19 Jun 2009 00:47:00 -0500</created>
                <updated>Fri, 3 Dec 2010 10:48:15 -0600</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>3</watches>
                        <comments>
                    <comment id="22905" author="importer" created="Tue, 24 Aug 2010 06:45:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/130&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/130&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22906" author="importer" created="Tue, 24 Aug 2010 06:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#127, #128, #129, #130)&lt;/p&gt;</comment>
                    <comment id="22907" author="importer" created="Tue, 24 Aug 2010 06:45:00 -0500"  >&lt;p&gt;juergenhoetzel said: This is still a issue on &lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Clojure 1.2.0-master-SNAPSHOT&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Any progress, hints? I prefer interactive documentiation via slime/repl&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>

<item>
            <title>[CLJ-129] Add documentation to sorted-set-by detailing how the provided comparator may change set membership semantics</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-129</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;To start, let&apos;s look at some simple default sorted-set behaviour (which uses PersistentHashMap via PersistentHashSet, and therefore uses equality/hashCode to determine identity):&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;user=&amp;gt; (sorted-set [1 2] [-5 10] [1 5])
#{[-5 10] [1 2] [1 5]}
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;

sorted-set-by uses PersistentTreeMap via PersistentTreeSet though, which implies that the comparator provided to sorted-set-by will be used to determine identity, and therefore member in the set.  This can lead to (IMO) non-intuitive behaviour:

&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;
user=&amp;gt; (sorted-set-by #(&amp;gt; (first %) (first %2)) [1 2] [-5 10] [1 5])
#{[1 2] [-5 10]}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Notice that because the provided comparison fn determines that &lt;span class=&quot;error&quot;&gt;&amp;#91;1 2&amp;#93;&lt;/span&gt; and &lt;span class=&quot;error&quot;&gt;&amp;#91;1 5&amp;#93;&lt;/span&gt; have the same sort order, the latter value is considered identical to the former, and not included in the set.  This behaviour could be very handy, but is also likely to cause confusion when what the user almost certainly wants is to maintain the membership semantics of the original set (e.g. relying upon equality/hashCode), but only modify the ordering.&lt;/p&gt;

&lt;p&gt;(BTW, yes, I know there&apos;s far easier ways to get the order I&apos;m indicating above over a set of vectors thanks to vectors being comparable via the compare fn.  The examples are only meant to be illustrative.  The same non-intuitive result would occur, with no easy fallback (like the &apos;compare&apos; fn when working with vectors) when the members of the set are non-Comparable Java object, and the comparator provided to sorted-set-by is defining a sort over some values returned by method calls into those objects.)&lt;/p&gt;

&lt;p&gt;I&apos;d be happy to change the docs for sorted-set-by, but I suspect that there are others who could encapsulate what&apos;s going on here more correctly and more concisely than I.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13526">CLJ-129</key>
            <summary>Add documentation to sorted-set-by detailing how the provided comparator may change set membership semantics</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="3" iconUrl="http://dev.clojure.org/jira/images/icons/status_inprogress.gif">In Progress</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="cemerick">Chas Emerick</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Thu, 18 Jun 2009 16:14:00 -0500</created>
                <updated>Tue, 24 Aug 2010 07:45:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="22903" author="importer" created="Tue, 24 Aug 2010 07:45:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/129&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/129&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22904" author="importer" created="Tue, 24 Aug 2010 07:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#127, #128, #129, #130)&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>

<item>
            <title>[CLJ-126] abstract superclass with non-public accessibility</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-126</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;The following code works in Java 6 but not in Java 5:&lt;/p&gt;

&lt;p&gt;(def Clojure 1.1.0-alpha-SNAPSHOT&lt;br/&gt;
user=&amp;gt; (def s (new StringBuilder &quot;aaa&quot;))&lt;br/&gt;
#&apos;user/s&lt;br/&gt;
user=&amp;gt; (. s setCharAt (int 0) (char \a))&lt;br/&gt;
java.lang.Exception: Unable to resolve symbol: setCharAt in this context&lt;/p&gt;

&lt;p&gt;This was discussed on the Clojure mailing list and Stephen C. Gillardi came up with the following conclusion:&lt;/p&gt;

&lt;p&gt;_StringBuilder extends AbstractStringBuilder (though the JavaDoc docs lie and say it extends Object). AbstractStringBuilder has default accessibility (not public, protected, or private) which makes the class inaccessible to code outside the java.lang package. In both Java SE 5 and Java SE 6, StringBuilder does not contain a .setCharAt method definition. It relies on the inherited public method in AbstractStringBuilder. (I downloaded the source code for both versions from Sun to check.)&lt;/p&gt;

&lt;p&gt;In Java SE 5, when Clojure checks whether or not .setCharAt on StringBuilder is public, it finds that it&apos;s a public method of a non-public base class and throws the exception you saw. (It looks like you&apos;re using a version of Clojure older than 18 May 2009 (Clojure svn r1371). Versions later than that print the more detailed message I saw.)&lt;/p&gt;

&lt;p&gt;In Java SE 6, Clojure&apos;s checks for accessibility of this method succeed and the method call works.&lt;/p&gt;

&lt;p&gt;I&apos;m not sure whether or not Clojure could be modified to make this method call work in Java 5. Google searches turn up discussion that this pattern of using an undocumented abstract superclass with non-public accessibility is not common in the JDK._ &lt;/p&gt;

&lt;p&gt;This ticket is being filed in the event that Clojure can handle these types of situations somehow.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13523">CLJ-126</key>
            <summary>abstract superclass with non-public accessibility</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, 17 Jun 2009 17:57:00 -0500</created>
                <updated>Tue, 24 Aug 2010 04:45:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22882" author="importer" created="Tue, 24 Aug 2010 04:45:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/126&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/126&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22883" author="importer" created="Tue, 24 Aug 2010 04:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #19, #30, #31, #126, #17, #42, #47, #50, #61, #64, #69, #71, #77, #79, #84, #87, #89, #96, #99, #103, #107, #112, #113, #114, #115, #118, #119, #121, #122, #124)&lt;/p&gt;</comment>
                    <comment id="22884" author="importer" created="Tue, 24 Aug 2010 04:45:00 -0500"  >&lt;p&gt;hiredman said: &lt;b&gt;Related&lt;/b&gt; association with ticket #259 was added&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>

<item>
            <title>[CLJ-122] GC  Issue 118: Patch to add :svn to *clojure-version*</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-122</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by miki.tebeka, May 16, 2009

Attached is a patch to add :svn to *clojure-version*.
In order &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; it to work &lt;span class=&quot;code-keyword&quot;&gt;do&lt;/span&gt; &quot;svn ps svn:keywords Revision
src/clj/clojure/core.clj&quot;

This way when people report problem in clojure, we can know the exact
revision they are talking about.&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13519">CLJ-122</key>
            <summary>GC  Issue 118: Patch to add :svn to *clojure-version*</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 17 Jun 2009 17:22:00 -0500</created>
                <updated>Tue, 24 Aug 2010 06:45:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 06:45:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22853" author="importer" created="Tue, 24 Aug 2010 06:45:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/122&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/122&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
clojure.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dXnrtCw4qr3RbzeJe5afGb/download/dXnrtCw4qr3RbzeJe5afGb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dXnrtCw4qr3RbzeJe5afGb/download/dXnrtCw4qr3RbzeJe5afGb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22854" author="importer" created="Tue, 24 Aug 2010 06:45:00 -0500"  >&lt;p&gt;oranenj said: [&lt;a href=&quot;file:dXnrtCw4qr3RbzeJe5afGb&quot;&gt;file:dXnrtCw4qr3RbzeJe5afGb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="22855" author="importer" created="Tue, 24 Aug 2010 06:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #19, #30, #31, #126, #17, #42, #47, #50, #61, #64, #69, #71, #77, #79, #84, #87, #89, #96, #99, #103, #107, #112, #113, #114, #115, #118, #119, #121, #122, #124)&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>

<item>
            <title>[CLJ-121] GC  Issue 117: FAQ Page has formatting errors</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-121</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by miki.tebeka, May 13, 2009

The FAQ page (http:&lt;span class=&quot;code-comment&quot;&gt;//code.google.com/p/clojure/wiki/FAQ) has several
&lt;/span&gt;formatting errors:

* &lt;span class=&quot;code-quote&quot;&gt;&quot;How &lt;span class=&quot;code-keyword&quot;&gt;do&lt;/span&gt; I call a Java method that takes a variable number of arguments?&quot;&lt;/span&gt;
is missing a space to make it a header.
* The link to SICP showing the URL&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13518">CLJ-121</key>
            <summary>GC  Issue 117: FAQ Page has formatting errors</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="importer">Assembla Importer</reporter>
                        <labels>
                    </labels>
                <created>Wed, 17 Jun 2009 17:20:00 -0500</created>
                <updated>Fri, 13 Apr 2012 08:02:57 -0500</updated>
                    <resolved>Fri, 13 Apr 2012 08:02:57 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22851" author="importer" created="Tue, 24 Aug 2010 06:45:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/121&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/121&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22852" author="importer" created="Tue, 24 Aug 2010 06:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #19, #30, #31, #126, #17, #42, #47, #50, #61, #64, #69, #71, #77, #79, #84, #87, #89, #96, #99, #103, #107, #112, #113, #114, #115, #118, #119, #121, #122, #124)&lt;/p&gt;</comment>
                    <comment id="25998" author="stu" created="Fri, 3 Dec 2010 11:56:14 -0600"  >&lt;p&gt;Can I move the FAQ over the Confluence, and then change the old Google code page to link over?&lt;/p&gt;</comment>
                    <comment id="25999" author="richhickey" created="Fri, 3 Dec 2010 11:58:08 -0600"  >&lt;p&gt;Yes, thanks&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>

<item>
            <title>[CLJ-120] GC  Issue 116: partition with pad</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-120</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by dimi...@gashinsky.com, May 09, 2009

;; A lot of times I needed a padding option on the partition. This is
;; my attempt to solve &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; problem. Any suggestions are welcome. I
;; hope &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; patch or something similar will make its way into the
;; core.

Some discussion that happened here:
http:&lt;span class=&quot;code-comment&quot;&gt;//groups.google.com/group/clojure/browse_frm/thread/6fcc1dd999a5ec02?tvc=1
&lt;/span&gt;was integrated into the patch.&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13517">CLJ-120</key>
            <summary>GC  Issue 116: partition with pad</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="scgilardi">Stephen C. Gilardi</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 17 Jun 2009 15:19:00 -0500</created>
                <updated>Fri, 2 Dec 2011 12:17:05 -0600</updated>
                    <resolved>Fri, 2 Dec 2011 12:17:05 -0600</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22823" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/120&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/120&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
partition-with-pad.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/ctfCdww4qr3RbzeJe5afGb/download/ctfCdww4qr3RbzeJe5afGb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/ctfCdww4qr3RbzeJe5afGb/download/ctfCdww4qr3RbzeJe5afGb&lt;/a&gt;&lt;br/&gt;
part.clj - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/ckiilEyzqr3PTqeJe5afGb/download/ckiilEyzqr3PTqeJe5afGb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/ckiilEyzqr3PTqeJe5afGb/download/ckiilEyzqr3PTqeJe5afGb&lt;/a&gt;&lt;br/&gt;
part.clj - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dmo9mEyzWr3QuceJe5aVNr/download/dmo9mEyzWr3QuceJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dmo9mEyzWr3QuceJe5aVNr/download/dmo9mEyzWr3QuceJe5aVNr&lt;/a&gt;&lt;br/&gt;
partition-with-pad-2.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bolonky_8r3RY8eJe5afGb/download/bolonky_8r3RY8eJe5afGb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bolonky_8r3RY8eJe5afGb/download/bolonky_8r3RY8eJe5afGb&lt;/a&gt;&lt;br/&gt;
ticket-120.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/bnWYoqzBKr3RKeeJe5afGb/download/bnWYoqzBKr3RKeeJe5afGb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/bnWYoqzBKr3RKeeJe5afGb/download/bnWYoqzBKr3RKeeJe5afGb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22824" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;oranenj said: [&lt;a href=&quot;file:ctfCdww4qr3RbzeJe5afGb&quot;&gt;file:ctfCdww4qr3RbzeJe5afGb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="22825" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;chouser@n01se.net said: It looks to me like the 3- and 4-arg bodies could be combined resulting in less code and no significant loss of performance.  A pad of nil could be treated the same as no pad supplied, which would be different from a numeric pad (including 0).&lt;/p&gt;</comment>
                    <comment id="22826" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;scgilardi said: By &quot;combined&quot; do you mean that the 3 argument version should call the 4 argument version with an explicit pad of nil?&lt;/p&gt;

&lt;p&gt;Currently, the 3 argument version does no padding. Instead it stops as soon as there are less than n args left:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;user=&amp;gt; (partition 3 [1 2 3 4])
((1 2 3))
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;

In contrast, the 4 argument version with a pad of nil produces (untested):
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;user=&amp;gt; (partition 3 nil [1 2 3 4])
((1 2 3) (4 nil nil))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Interpreting nil passed to the 4 argument version as a request to get the behavior of the 3 argument version looks wrong to me. There would be no way to express both a desire for padding and that the padding value should be nil.&lt;/p&gt;</comment>
                    <comment id="22827" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;scgilardi said: Looking into the issue further, I see I made a mistake in my previous comment. The padding is given as a sequence, not a value. However, the key difference between the 3 and 4 arg versions remains. The 3 argument version never returns a &quot;short&quot; sequence at the end. The 4 arg version can.&lt;/p&gt;

&lt;p&gt;Along the lines of your suggestion, we could combine the two by changing the 4 arg version to interpret a pad value of &quot;[]&quot; to mean &quot;return a short sequence at the end if necessary&quot; and a pad value of &quot;nil&quot; to mean &quot;never return a short sequence&quot;. This would involve interpreting &quot;nil&quot; different from &quot;the empty sequence&quot; where in many other contexts they&apos;re equivalent. I&apos;m not sure whether or not saving some code is a good trade for introducing that subtle difference.&lt;/p&gt;</comment>
                    <comment id="22828" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;chouser@n01se.net said: I had also mistaken pad to be a number.  I think you&apos;re right, producing different behavior when pad is an empty seq vs. nil is just asking for trouble.  Thanks for taking a second look.&lt;/p&gt;</comment>
                    <comment id="22829" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;importer said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:e0e8326871983be5615f5c0bc9dbf66140c7017f&amp;#93;&lt;/span&gt;]) add optional pad argument to partition. Fixes #120&lt;/p&gt;

&lt;p&gt;Signed-off-by: Chouser &amp;lt;chouser@n01se.net&amp;gt;&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                    <comment id="22830" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;digash said: The original version was using nil but Rich suggested not do it that way.&lt;br/&gt;
For different revisions take a look at this gist &lt;a href=&quot;http://gist.github.com/109002&quot;&gt;http://gist.github.com/109002&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22831" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;chouser@n01se.net said: Thanks for that link.  Your final solution (not using nil) is already committed, but we should get those tests into clojure-test once it&apos;s location has been settled.&lt;/p&gt;</comment>
                    <comment id="22832" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;richhickey said: The new partition has this behavior:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;user=&amp;gt; (partition 3 1 nil (range 10))
((0 1 2) (1 2 3) (2 3 4) (3 4 5) (4 5 6) (5 6 7) (6 7 8) (7 8 9) (8 9))
user=&amp;gt; (partition 3 1 [42] (range 10))
((0 1 2) (1 2 3) (2 3 4) (3 4 5) (4 5 6) (5 6 7) (6 7 8) (7 8 9) (8 9 42))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;It seems to me that with a step of one it should never use the pad, and, more generally, once it has produced one partition containing the last element of the coll it should be done.&lt;/p&gt;</comment>
                    <comment id="22833" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;richhickey said: An alternative rule is that every step within the supplied coll is yielded, padding as supplied, which would mean ending with: &lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(7 8 9) (8 9) (9)
(7 8 9) (8 9 42) (9 42)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="22834" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;scgilardi said: [&lt;a href=&quot;file:ckiilEyzqr3PTqeJe5afGb&quot;&gt;file:ckiilEyzqr3PTqeJe5afGb&lt;/a&gt;]: proposed alternative (see my comment)&lt;/p&gt;</comment>
                    <comment id="22835" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;scgilardi said: I&apos;ve uploaded part.clj which is another possible alternative. It handles a step of 1 without using the pad. Some invariants in the partitions it produces for the 4 argument case:&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;for a step size of n, if you provide n - 1 objects in the padding sequence, all output sequences will be of size n&lt;/li&gt;
	&lt;li&gt;for a step size n, the output sequences will begin with elements at offsets 0, n, 2n, 3n, ... in the original sequence until no such element exists.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Some outputs:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;user=&amp;gt; (part/partition 3 1 nil (range 10))
((0 1 2) (1 2 3) (2 3 4) (3 4 5) (4 5 6) (5 6 7) (6 7 8) (7 8 9))
user=&amp;gt; (part/partition 3 1 [42] (range 10))
((0 1 2) (1 2 3) (2 3 4) (3 4 5) (4 5 6) (5 6 7) (6 7 8) (7 8 9))
---
user=&amp;gt; (part/partition 3 2 nil (range 9))
((0 1 2) (2 3 4) (4 5 6) (6 7 8) (8))
user=&amp;gt;  (part/partition 3 2 [42] (range 9))
((0 1 2) (2 3 4) (4 5 6) (6 7 8) (8 42))
user=&amp;gt; (part/partition 3 2 [42 43] (range 9))
((0 1 2) (2 3 4) (4 5 6) (6 7 8) (8 42 43))
---
user=&amp;gt; (part/partition 3 4 nil (range 6))
((0 1 2) (4 5))
user=&amp;gt; (part/partition 3 4 nil (range 7))
((0 1 2) (4 5 6))
user=&amp;gt; (part/partition 3 4 nil (range 8))
((0 1 2) (4 5 6))
user=&amp;gt; (part/partition 3 4 nil (range 9))
((0 1 2) (4 5 6) (8))
---
user=&amp;gt; (part/partition 3 3 [42 43] (range 3))
((0 1 2))
user=&amp;gt; (part/partition 3 3 [42 43] (range 4))
((0 1 2) (3 42 43))
user=&amp;gt; (part/partition 3 3 [42 43] (range 5))
((0 1 2) (3 4 42))
user=&amp;gt; (part/partition 3 3 [42 43] (range 6))
((0 1 2) (3 4 5))
user=&amp;gt; (part/partition 3 3 [42 43] (range 7))
((0 1 2) (3 4 5) (6 42 43))
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;

Here&apos;s the relevant portion of the code:

&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;  ([n step pad coll]
     (lazy-seq
      (when-let [s (seq coll)]
        (let [p (take n s)]
          (cond (= n (count p))
                (cons p (partition n step pad (drop step s)))
                (&amp;gt;= step (count p))
                (list (take n (concat p pad)))))))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Please see part.clj for details and a test program.&lt;/p&gt;</comment>
                    <comment id="22836" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;scgilardi said: Ugh, the second &quot;invariant&quot; I listed doesn&apos;t hold for step = 1. It appears to hold for other step values. Perhaps part.clj will still be useful to someone in coming up with a better solution.&lt;/p&gt;</comment>
                    <comment id="22837" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;richhickey said: I don&apos;t see why step of 1 should get special treatment. If the rule is the second one (yield partitions as long as step offsets are present in original coll), then&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(part/partition 3 1 nil (range 10))
should end with:
(7 8 9) (8 9) (9)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="22838" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;scgilardi said: This one appears to work:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;([n step pad coll]
     (lazy-seq
      (when-let [s (seq coll)]
        (cons
         (take n (concat s pad))
         (partition n step pad (drop step s)))))))
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;

&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;user=&amp;gt; (run part)
n = 3, pad = nil
:max 5 :step 1 ((0 1 2) (1 2 3) (2 3 4) (3 4) (4))
:max 6 :step 1 ((0 1 2) (1 2 3) (2 3 4) (3 4 5) (4 5) (5))
:max 7 :step 1 ((0 1 2) (1 2 3) (2 3 4) (3 4 5) (4 5 6) (5 6) (6))
:max 8 :step 1 ((0 1 2) (1 2 3) (2 3 4) (3 4 5) (4 5 6) (5 6 7) (6 7) (7))
:max 9 :step 1 ((0 1 2) (1 2 3) (2 3 4) (3 4 5) (4 5 6) (5 6 7) (6 7 8) (7 8) (8))

:max 5 :step 2 ((0 1 2) (2 3 4) (4))
:max 6 :step 2 ((0 1 2) (2 3 4) (4 5))
:max 7 :step 2 ((0 1 2) (2 3 4) (4 5 6) (6))
:max 8 :step 2 ((0 1 2) (2 3 4) (4 5 6) (6 7))
:max 9 :step 2 ((0 1 2) (2 3 4) (4 5 6) (6 7 8) (8))

:max 5 :step 3 ((0 1 2) (3 4))
:max 6 :step 3 ((0 1 2) (3 4 5))
:max 7 :step 3 ((0 1 2) (3 4 5) (6))
:max 8 :step 3 ((0 1 2) (3 4 5) (6 7))
:max 9 :step 3 ((0 1 2) (3 4 5) (6 7 8))

:max 5 :step 4 ((0 1 2) (4))
:max 6 :step 4 ((0 1 2) (4 5))
:max 7 :step 4 ((0 1 2) (4 5 6))
:max 8 :step 4 ((0 1 2) (4 5 6))
:max 9 :step 4 ((0 1 2) (4 5 6) (8))

n = 3, pad = [42 43]
:max 5 :step 1 ((0 1 2) (1 2 3) (2 3 4) (3 4 42) (4 42 43))
:max 6 :step 1 ((0 1 2) (1 2 3) (2 3 4) (3 4 5) (4 5 42) (5 42 43))
:max 7 :step 1 ((0 1 2) (1 2 3) (2 3 4) (3 4 5) (4 5 6) (5 6 42) (6 42 43))
:max 8 :step 1 ((0 1 2) (1 2 3) (2 3 4) (3 4 5) (4 5 6) (5 6 7) (6 7 42) (7 42 43))
:max 9 :step 1 ((0 1 2) (1 2 3) (2 3 4) (3 4 5) (4 5 6) (5 6 7) (6 7 8) (7 8 42) (8 42 43))

:max 5 :step 2 ((0 1 2) (2 3 4) (4 42 43))
:max 6 :step 2 ((0 1 2) (2 3 4) (4 5 42))
:max 7 :step 2 ((0 1 2) (2 3 4) (4 5 6) (6 42 43))
:max 8 :step 2 ((0 1 2) (2 3 4) (4 5 6) (6 7 42))
:max 9 :step 2 ((0 1 2) (2 3 4) (4 5 6) (6 7 8) (8 42 43))

:max 5 :step 3 ((0 1 2) (3 4 42))
:max 6 :step 3 ((0 1 2) (3 4 5))
:max 7 :step 3 ((0 1 2) (3 4 5) (6 42 43))
:max 8 :step 3 ((0 1 2) (3 4 5) (6 7 42))
:max 9 :step 3 ((0 1 2) (3 4 5) (6 7 8))

:max 5 :step 4 ((0 1 2) (4 42 43))
:max 6 :step 4 ((0 1 2) (4 5 42))
:max 7 :step 4 ((0 1 2) (4 5 6))
:max 8 :step 4 ((0 1 2) (4 5 6))
:max 9 :step 4 ((0 1 2) (4 5 6) (8 42 43))

nil
user=&amp;gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="22839" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;scgilardi said: [&lt;a href=&quot;file:dmo9mEyzWr3QuceJe5aVNr&quot;&gt;file:dmo9mEyzWr3QuceJe5aVNr&lt;/a&gt;]: improved version&lt;/p&gt;</comment>
                    <comment id="22840" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;richhickey said: This looks fine to me, do you want to make up a patch Steve?&lt;/p&gt;</comment>
                    <comment id="22841" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;scgilardi said: [&lt;a href=&quot;file:bolonky_8r3RY8eJe5afGb&quot;&gt;file:bolonky_8r3RY8eJe5afGb&lt;/a&gt;]: modified per comments&lt;/p&gt;</comment>
                    <comment id="22842" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;scgilardi said: The patch includes and updated doc string, the new 4 argument case, and a change to the whitespace in the 3 argument case for consistent indentation with the 4 argument case (current emacs clojure-mode). I can provide a patch that doesn&apos;t touch the 3 argument case whitespace if desired.&lt;/p&gt;</comment>
                    <comment id="22843" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;richhickey said: I think the doc should be even more explicit, something like:&lt;/p&gt;

&lt;p&gt;... do not overlap. If no pad argument is supplied, will produce only complete partitions of size n, possibly not including items at the end if the size of coll is not a multiple of n. If the pad argument is supplied, will produce a partition at every offset present in the supplied collection, using the pad elements as necessary to pad trailing partitions up to n items each. If pad is nil or a collection containing fewer than n-1 items, ...&lt;/p&gt;</comment>
                    <comment id="22844" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;scgilardi said: How about this:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;&quot;Returns a lazy seq of lazy subseqs of coll, each of (nominally) n
  items. The subseqs begin at offsets 0, step, 2*step, etc. in coll. If
  step is not supplied, it defaults to n yielding adjacent, non-overlapping
  subseqs. If pad is not supplied, produces only complete subseqs of n
  items, possibly not including some items at the end of coll. If pad is
  supplied, produces a subseq at every offset present in coll, using any
  available items from pad to pad shorter subseqs up to n items. If pad is
  a seq of at least n-1 items, produces only complete padded subseqs of n
  items. If pad is shorter (or nil) trailing padded subseqs may be
  shorter.&quot;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I adopted the mathematical terminology that the partition is the operation (the division into parts) and that the individual pieces are not &quot;partitions&quot;, but something else: part, block, chunk, or as I propose here, subseq. I like subseq because it embodies succinctly the fact that the items from coll are always kept sequential.&lt;/p&gt;</comment>
                    <comment id="22845" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;richhickey said: I&apos;m now convinced we are cramming 2 functions into one, and would prefer to see this new functionality as a new function:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(take-subs n coll)
(take-subs n step coll)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&apos;padding&apos; isn&apos;t a necessary concept, as we have concat. take implies the possible partial subseqs. Also take-subs can yield a lazy seq of lazy seqs, but partition can&apos;t.&lt;/p&gt;</comment>
                    <comment id="22846" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;scgilardi said: [&lt;a href=&quot;file:bnWYoqzBKr3RKeeJe5afGb&quot;&gt;file:bnWYoqzBKr3RKeeJe5afGb&lt;/a&gt;]: take-subs + tests&lt;/p&gt;</comment>
                    <comment id="22847" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;scgilardi said: OK, paddiing isn&apos;t necessary because the same thing can be accomplished by using concat to append a padding sequence of exactly n-1 items to coll before processing it with partition.&lt;/p&gt;

&lt;p&gt;partition can&apos;t return lazy subseqs because it counts them which (in the general case) will realize them.&lt;/p&gt;

&lt;p&gt;ticket-120.patch contains modified docs for partition, removed arity 4 case from partition, take-subs implemented, tests for take-subs based on tests for partition, enhanced one sub-test for partition.&lt;/p&gt;</comment>
                    <comment id="22848" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;digash said: I like the new take-subs, but I cannot figure out how to use concat instead of partition without counting it and realizing the whole sequence.&lt;br/&gt;
The initial motivation was to use partition with destructuring and creating matrix from a sequences. I do not see an easy way to reproduce this case with the new implementation.&lt;/p&gt;

&lt;p&gt;The old implementation:&lt;br/&gt;
(for [&lt;span class=&quot;error&quot;&gt;&amp;#91;a b c&amp;#93;&lt;/span&gt; (partition 3 3 (repeat 0) &lt;span class=&quot;error&quot;&gt;&amp;#91;1 2 3 4&amp;#93;&lt;/span&gt;)] &lt;span class=&quot;error&quot;&gt;&amp;#91;a b c&amp;#93;&lt;/span&gt;) ==&amp;gt; (&lt;span class=&quot;error&quot;&gt;&amp;#91;1 2 3&amp;#93;&lt;/span&gt; &lt;span class=&quot;error&quot;&gt;&amp;#91;4 0 0&amp;#93;&lt;/span&gt;)&lt;/p&gt;

&lt;p&gt;The new implementation:&lt;br/&gt;
(take 10 (let [coll &lt;span class=&quot;error&quot;&gt;&amp;#91;1 2 3 4&amp;#93;&lt;/span&gt; p 3] (take (/ (count coll) p) (for [&lt;span class=&quot;error&quot;&gt;&amp;#91;a b c&amp;#93;&lt;/span&gt; (take-subs p (concat coll (repeat 0)))] &lt;span class=&quot;error&quot;&gt;&amp;#91;a b c&amp;#93;&lt;/span&gt;)))) ==&amp;gt; (&lt;span class=&quot;error&quot;&gt;&amp;#91;1 2 3&amp;#93;&lt;/span&gt; &lt;span class=&quot;error&quot;&gt;&amp;#91;4 0 0&amp;#93;&lt;/span&gt;)&lt;/p&gt;</comment>
                    <comment id="22849" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;scgilardi said: Here are two options for how I would write the example using the most recent patch:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;user=&amp;gt; (&lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; [[a b c] (partition 3 (concat [1 2 3 4] (take 3 (repeat 0))))] [a b c])
([1 2 3] [4 0 0])
user=&amp;gt; (&lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; [[a b c] (partition 3 (concat [1 2 3 4] [0 0 0]))] [a b c])
([1 2 3] [4 0 0])
user=&amp;gt; 
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;or in the general &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt;:
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;user=&amp;gt; (defn padded-partition
[n pad coll]
(partition n (concat coll (take (dec n) pad))))
#&apos;user/padded-partition
user=&amp;gt; (&lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; [[a b c] (padded-partition 3 (repeat 0) [1 2 3 4])] [a b c])
([1 2 3] [4 0 0])
user=&amp;gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="22850" author="importer" created="Tue, 28 Sep 2010 07:52:00 -0500"  >&lt;p&gt;scgilardi said: My first code example above was incorrect. For proper operation with all combinations of n and step, the concatenated padding seq needs to be exactly n-1 in length.&lt;/p&gt;

&lt;p&gt;Here&apos;s the correction:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;user=&amp;gt; (&lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; [[a b c] (partition 3 (concat [1 2 3 4] (take 2 (repeat 0))))] [a b c])
([1 2 3] [4 0 0])
user=&amp;gt; (&lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; [[a b c] (partition 3 (concat [1 2 3 4] [0 0]))] [a b c])
([1 2 3] [4 0 0])
user=&amp;gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="27308" author="chouser@n01se.net" created="Fri, 18 Nov 2011 23:20:02 -0600"  >&lt;p&gt;partition has a pad argument now.  Can this be closed?&lt;/p&gt;</comment>
                    <comment id="27397" author="stu" created="Fri, 2 Dec 2011 12:17:05 -0600"  >&lt;p&gt;partition has pad now&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="10013">Test</customfieldvalue>

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

<item>
            <title>[CLJ-118] GC Issue 114:  version.properties in branch/1.0 is inaccurate</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-118</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by hlship, May 04, 2009

The version.properties in the 1.0 branch generates snapshot releases.
Ideally, there should be a tags/1.0 branch that locks down the 1.0 release.
Context: trying to build a 1.0 release artifact &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; the Maven repository.

Comment 1 by richhickey, May 04, 2009

Do you believe &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; advice was erroneous?

http:&lt;span class=&quot;code-comment&quot;&gt;//groups.google.com/group/clojure/msg/cb46994561dbc732
&lt;/span&gt;
Comment 2 by hlship, May 05, 2009

I&apos;m bothered that the 1.0 release is a 1.0 release, but not really.  Either its a
&lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; release or its not. Saying its still a snapshot when you&apos;ve broadcasted to the
world that its &lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; seems very odd to me.

On the mailing list, I espoused the &lt;span class=&quot;code-quote&quot;&gt;&quot;Apache Way&quot;&lt;/span&gt;, which is to not get hung up on a
&lt;span class=&quot;code-quote&quot;&gt;&quot;1.0.0&quot;&lt;/span&gt; number, but keep releasing.  If &lt;span class=&quot;code-quote&quot;&gt;&quot;1.0.2&quot;&lt;/span&gt; has bugs, fix them and release
&lt;span class=&quot;code-quote&quot;&gt;&quot;1.0.3&quot;&lt;/span&gt;.  If that is &lt;span class=&quot;code-keyword&quot;&gt;finally&lt;/span&gt; stable, announce &lt;span class=&quot;code-quote&quot;&gt;&quot;Clojure 1.0 is version 1.0.3&quot;&lt;/span&gt;. Let the
release prove itself valid.

Older Tapestry releases were based on the &lt;span class=&quot;code-quote&quot;&gt;&quot;line in the sand&quot;&lt;/span&gt; approach ... and always
ended up requiring a flurry of dot release bug fixes.&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13515">CLJ-118</key>
            <summary>GC Issue 114:  version.properties in branch/1.0 is inaccurate</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 17 Jun 2009 14:17:00 -0500</created>
                <updated>Fri, 20 Jul 2012 16:55:35 -0500</updated>
                    <resolved>Fri, 20 Jul 2012 16:55:35 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22814" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/118&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/118&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22815" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #19, #30, #31, #126, #17, #42, #47, #50, #61, #64, #69, #71, #77, #79, #84, #87, #89, #96, #99, #103, #107, #112, #113, #114, #115, #118, #119, #121, #122, #124)&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>

<item>
            <title>[CLJ-115] GC  Issue 111: Enable naming an array parameter for areduce</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-115</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by bo...@boriska.com, Apr 28, 2009

Currently there is no way to access anonymous array parameter of areduce.

Consider:

(areduce (.. &lt;span class=&quot;code-object&quot;&gt;System&lt;/span&gt; getProperties values toArray) 
     i r 0 (some_expression))
some_expression has no way to access the array.

Per Rich:
--------------------
Yes, areduce would be nicer &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; it looked like a binding set:

(areduce [aname anarray, ret init] expr)
(areduce [aname anarray, ret init, start-idx  start-n] expr)
(areduce [aname anarray, ret init, start-idx  start-n, end-idx end-n]
expr) 
--------------------

This was discussed here:
http:&lt;span class=&quot;code-comment&quot;&gt;//groups.google.com/group/clojure/tree/browse_frm/thread/40597a8ac322bc37/8cf6b17328ea7e8b?rnum=1&amp;amp;_done=%2Fgroup%2Fclojure%2Fbrowse_frm%2Fthread%2F40597a8ac322bc37%2F8cf6b17328ea7e8b%3Ftvc%3D1%26pli%3D1%26#doc_9ea7e3c5d500ed3c&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13512">CLJ-115</key>
            <summary>GC  Issue 111: Enable naming an array parameter for areduce</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, 17 Jun 2009 16:11:00 -0500</created>
                <updated>Tue, 24 Aug 2010 05:45:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22803" author="importer" created="Tue, 24 Aug 2010 05:45:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/115&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/115&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22804" author="importer" created="Tue, 24 Aug 2010 05:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #19, #30, #31, #126, #17, #42, #47, #50, #61, #64, #69, #71, #77, #79, #84, #87, #89, #96, #99, #103, #107, #112, #113, #114, #115, #118, #119, #121, #122, #124)&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>

<item>
            <title>[CLJ-114] GC  Issue 110: clojure version number patch</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-114</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by laurent....@gmail.com, Apr 26, 2009

Patch with the necessary changes to handle version numbering &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; clojure:

 * a src/clj/clojure/version.properties file
 * &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; version.properties file is the reference &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; version numbers. It is
on the classpath so it can be seen by clojure at runtime. It is in a
subdirectory of clojure-the-project so any tool can refer to it relatively
to the installation of clojure.

 * I&apos;ve added the necessary code to clojure to load clojure version number
at startup time


I&apos;ve also added function (clojure.core/clojure-version) that will &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; a
string representing the version from the structured *clojure-version* map.
The algorithm here is simple: 
&amp;lt;MAJOR&amp;gt;.&amp;lt;MINOR&amp;gt;[.&amp;lt;INCREMENT&amp;gt;][-&amp;lt;QUALIFIER&amp;gt;][-SNAPSHOT]

 * I&apos;ve changed the ant build.xml so that it creates fully qualified names
with version attributes &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; the generated jars.
 * Note on the :interim attribute: to protect the person who makes releases
from itself, instead of considering :interim to be &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; there is the
&lt;span class=&quot;code-quote&quot;&gt;&quot;&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;&quot;&lt;/span&gt; string in the properties file, I&apos;ve made the opposite choice:
interim is &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; any value other than &lt;span class=&quot;code-quote&quot;&gt;&quot;&lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;&quot;&lt;/span&gt;. So &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; there is a typo in
version.properties (e.g. tru instead of &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;), then the release will be
marked as interim, and that will not be a big deal. In the other &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt;, it
would be a big deal &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; an official release was made accidentally instead of
an interim.

* &lt;span class=&quot;code-keyword&quot;&gt;finally&lt;/span&gt;, pom.xml file is now generated from ant as part of the classic
init step.

Note: I strongly suggest that the clojure.version.interim property remains
&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt; in svn, so that it&apos;s not possible to inadvertently release a version
&lt;span class=&quot;code-quote&quot;&gt;&quot;too early&quot;&lt;/span&gt;.

Comment 1  by richhickey, Apr 27, 2009

I can&apos;t apply the patch due to missing pom-template.xml?

Also, could you just put the contents of core_version.clj into core.clj? I&apos;d rather
not have another file just &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;.

Thanks!

Comment 2 by laurent....@gmail.com, Apr 27, 2009

OK, core_version.clj content back into core.clj.

There was a problem with pom-template.xml probably because I tried on my local
working copy to make a svn rename pom.xml pom-template.xml, and somehow the svn diff
command did not like that.

What I&apos;ve done in the current patch is first svn remove pom.xml then svn add
pom-template.xml.

Comment 3  by richhickey, Apr 27, 2009

patch applied- svn 1357 - thanks!

Status: Accepted
Comment 4 by scgilardi, May 12, 2009

(clojure-version) &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; 1.0 has a trailing &lt;span class=&quot;code-quote&quot;&gt;&quot;-&quot;&lt;/span&gt;. The intention (as noted above in the
issue) is that when the qualifier is absent, there should be no &lt;span class=&quot;code-quote&quot;&gt;&quot;-&quot;&lt;/span&gt;. The current
setup is reading a blank qualifier as an empty string, but checking later &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; nil
rather than nil or the empty string.

Clojure 1.0.0-
user=&amp;gt; *clojure-version*
{:major 1, :minor 0, :incremental 0, :qualifier &quot;&quot;}
user=&amp;gt; (clojure-version)
&lt;span class=&quot;code-quote&quot;&gt;&quot;1.0.0-&quot;&lt;/span&gt;
user=&amp;gt; 



Comment 5 by laurent....@gmail.com, May 12, 2009

OK, a mistake on my part.

Rich, I also see you have made implicitly the &lt;span class=&quot;code-quote&quot;&gt;&quot;incremental&quot;&lt;/span&gt; attribute mandatory in
trunk (since you apply &lt;span class=&quot;code-object&quot;&gt;Integer&lt;/span&gt;/valueOf on it without checking &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; nullity or string
emptyness).

If it is intentional, I can also add in the corrective patch a modified build.xml
that verifies &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; (incremental being mandatory) when building with ant, or I can
change the patch to keep the &lt;span class=&quot;code-quote&quot;&gt;&quot;incremental&quot;&lt;/span&gt; attribute optional.

Waiting &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; your answer before creating the patch.&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13511">CLJ-114</key>
            <summary>GC  Issue 110: clojure version number patch</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 17 Jun 2009 23:09:00 -0500</created>
                <updated>Tue, 24 Aug 2010 00:45:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 00:45:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22799" author="importer" created="Tue, 24 Aug 2010 00:45:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/114&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/114&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
clojure-version.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aKO9q2w4mr3Od2eJe5aVNr/download/aKO9q2w4mr3Od2eJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aKO9q2w4mr3Od2eJe5aVNr/download/aKO9q2w4mr3Od2eJe5aVNr&lt;/a&gt;&lt;br/&gt;
clojure-version2.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aKO_-6w4mr3Od2eJe5aVNr/download/aKO_-6w4mr3Od2eJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aKO_-6w4mr3Od2eJe5aVNr/download/aKO_-6w4mr3Od2eJe5aVNr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22800" author="importer" created="Tue, 24 Aug 2010 00:45:00 -0500"  >&lt;p&gt;oranenj said: [&lt;a href=&quot;file:aKO9q2w4mr3Od2eJe5aVNr&quot;&gt;file:aKO9q2w4mr3Od2eJe5aVNr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="22801" author="importer" created="Tue, 24 Aug 2010 00:45:00 -0500"  >&lt;p&gt;oranenj said: [&lt;a href=&quot;file:aKO_-6w4mr3Od2eJe5aVNr&quot;&gt;file:aKO_-6w4mr3Od2eJe5aVNr&lt;/a&gt;]: on comment 2&lt;/p&gt;</comment>
                    <comment id="22802" author="importer" created="Tue, 24 Aug 2010 00:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #19, #30, #31, #126, #17, #42, #47, #50, #61, #64, #69, #71, #77, #79, #84, #87, #89, #96, #99, #103, #107, #112, #113, #114, #115, #118, #119, #121, #122, #124)&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>

<item>
            <title>[CLJ-112] GC  Issue 108: All Clojure interfaces should specify CharSequence instead of String when possible</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-112</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by redchin, Apr 20, 2009

rhickey: unlink: then just use a map {:escaped &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt; :val &lt;span class=&quot;code-quote&quot;&gt;&quot;foo&quot;&lt;/span&gt;}

unlink: What I meant is, everything in between would want to see something 
&lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt;-y, not caring whether it&apos;s a &lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt; or MyString.

hiredman: unlink: &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; you use something that &lt;span class=&quot;code-keyword&quot;&gt;implements&lt;/span&gt; CharSequence and 
IMeta (I think it&apos;s IMeta) you get something that is basically a &lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt;, 
but with metadata

rhickey: what hiredman said

hiredman: ideally most things would not specify &lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt; but CharSequence in 
their &lt;span class=&quot;code-keyword&quot;&gt;interface&lt;/span&gt;

hiredman: but somehow I doubt that is &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt;

unlink: ok.

unlink: Good to know.

rhickey: hiredman: unfortunately that&apos;s not &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt; of some of Clojure - could 
you enter an issue &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; it please - use CharSequence when possible?&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13509">CLJ-112</key>
            <summary>GC  Issue 108: All Clojure interfaces should specify CharSequence instead of String when possible</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, 17 Jun 2009 14:06:00 -0500</created>
                <updated>Tue, 24 Aug 2010 03:45:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="22794" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/112&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/112&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22795" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #19, #30, #31, #126, #17, #42, #47, #50, #61, #64, #69, #71, #77, #79, #84, #87, #89, #96, #99, #103, #107, #112, #113, #114, #115, #118, #119, #121, #122, #124)&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>

<item>
            <title>[CLJ-107] GC Issue 103: bit-count function</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-107</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by a...@thened.net, Apr 08, 2009

I posted &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; small patch to the mailing list last week but received no
feedback, so I&apos;m attaching it here to make sure it doesn&apos;t get lost.  I
have submitted a CA.

http:&lt;span class=&quot;code-comment&quot;&gt;//groups.google.com/group/clojure/browse_thread/thread/4345f76a12bac6fe/
&lt;/span&gt;
The &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; function bit-count returns the count of 1-bits in a number, like
C&apos;s popcount or Common Lisp&apos;s logcount.&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13504">CLJ-107</key>
            <summary>GC Issue 103: bit-count function</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="5" iconUrl="http://dev.clojure.org/jira/images/icons/priority_trivial.gif">Trivial</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="jafingerhut">Andy Fingerhut</reporter>
                        <labels>
                    </labels>
                <created>Wed, 17 Jun 2009 13:59:00 -0500</created>
                <updated>Thu, 15 Nov 2012 20:40:50 -0600</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22781" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/107&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/107&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
bit-count.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/dqone2w4er3RbzeJe5afGb/download/dqone2w4er3RbzeJe5afGb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/dqone2w4er3RbzeJe5afGb/download/dqone2w4er3RbzeJe5afGb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22782" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;oranenj said: [&lt;a href=&quot;file:dqone2w4er3RbzeJe5afGb&quot;&gt;file:dqone2w4er3RbzeJe5afGb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="22783" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #19, #30, #31, #126, #17, #42, #47, #50, #61, #64, #69, #71, #77, #79, #84, #87, #89, #96, #99, #103, #107, #112, #113, #114, #115, #118, #119, #121, #122, #124)&lt;/p&gt;</comment>
                    <comment id="29954" author="jafingerhut" created="Thu, 15 Nov 2012 20:40:14 -0600"  >&lt;p&gt;clj-107-add-bit-count-v1.txt is probably a correct updated version of the old patch linked above.  Added a couple of unit tests.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11681" name="clj-107-add-bit-count-v1.txt" size="1980" author="jafingerhut" created="Thu, 15 Nov 2012 20:40:14 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[CLJ-99] GC Issue 95:    max-key and min-key evaluate k multiple times for arguments</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-99</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by H.Duerer, Mar 13, 2009

max-key or min-key will evaluate (k value) multiple times &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; arguments &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt;
more than 2 arguments are passed.

This is undesirable &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; k is expensive to calculate.

Something like the code below would avoid these &lt;span class=&quot;code-object&quot;&gt;double&lt;/span&gt; calculations (at the
price of generating more ephemeral garbage)

(defn max-key
  &lt;span class=&quot;code-quote&quot;&gt;&quot;Returns the x &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; which (k x), a number, is greatest.&quot;&lt;/span&gt;
  ([k x] x)
  ([k x y] (&lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (&amp;gt; (k x) (k y)) x y))
  ([k x y &amp;amp; more]
     (second (reduce (fn [x y] (&lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (&amp;gt; (first x) (first y)) x y))
                     (map #(vector (k %) %) (cons x (cons y more)))))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13496">CLJ-99</key>
            <summary>GC Issue 95:    max-key and min-key evaluate k multiple times for arguments</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="jafingerhut">Andy Fingerhut</reporter>
                        <labels>
                    </labels>
                <created>Wed, 17 Jun 2009 15:49:00 -0500</created>
                <updated>Thu, 15 Nov 2012 21:36:54 -0600</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="22760" author="importer" created="Tue, 24 Aug 2010 05:45:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/99&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/99&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22761" author="importer" created="Tue, 24 Aug 2010 05:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #19, #30, #31, #126, #17, #42, #47, #50, #61, #64, #69, #71, #77, #79, #84, #87, #89, #96, #99, #103, #107, #112, #113, #114, #115, #118, #119, #121, #122, #124)&lt;/p&gt;</comment>
                    <comment id="29955" author="jafingerhut" created="Thu, 15 Nov 2012 21:36:27 -0600"  >&lt;p&gt;clj-99-min-key-max-key-performance-v1.txt dated Nov 15 2012 changes min-key and max-key to evaluate the function k on each of its other arguments at most once.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11682" name="clj-99-min-key-max-key-performance-v1.txt" size="2577" author="jafingerhut" created="Thu, 15 Nov 2012 21:36:27 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[CLJ-89] GC  Issue 85:    In a defn, arglists metadata becomes the first (unexpected?) symbol</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-89</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by jochu0, Feb 22, 2009

&amp;gt; What (small set of) steps will reproduce the problem?

(:arglists (meta (defn arglists broken-arglist ([a] a) ([a b] b))))
(broken-arglist)

&amp;gt; What is the expected output? What &lt;span class=&quot;code-keyword&quot;&gt;do&lt;/span&gt; you see instead?

I would expect ([a] [a b]) &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; not an error.

&amp;gt; What version are you using?

Using the latest clojure (r1298) and also likely to exist before lazy-seq.

&amp;gt; Was &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; discussed on the group? If so, please provide a link to the
discussion:

http:&lt;span class=&quot;code-comment&quot;&gt;//groups.google.com/group/clojure/browse_thread/thread/bafdb169330a9344&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13486">CLJ-89</key>
            <summary>GC  Issue 85:    In a defn, arglists metadata becomes the first (unexpected?) symbol</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 17 Jun 2009 13:37:00 -0500</created>
                <updated>Tue, 24 Aug 2010 03:45:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 03:45:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22719" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/89&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/89&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22720" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #19, #30, #31, #126, #17, #42, #47, #50, #61, #64, #69, #71, #77, #79, #84, #87, #89, #96, #99, #103, #107, #112, #113, #114, #115, #118, #119, #121, #122, #124)&lt;/p&gt;</comment>
                    <comment id="22721" author="importer" created="Tue, 24 Aug 2010 03:45:00 -0500"  >&lt;p&gt;stu said: On the latest master I see what I think is the expected error:&lt;/p&gt;


&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(:arglists (meta (defn arglists broken-arglist ([a] a) ([a b] b))))
java.lang.IllegalArgumentException: Don&apos;t know how to create ISeq from: clojure.lang.Symbol&lt;/pre&gt;
&lt;/div&gt;&lt;/div&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>

<item>
            <title>[CLJ-87] GC  Issue 83:    PersistentArrayMap trust the reader (map literals) too much</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-87</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by karmazilla, Feb 17, 2009

What (small set of) steps will reproduce the problem?

PersistentArrayMap gets it wrong:

user=&amp;gt; {1 1 1 1 1 1 2 2}
{1 1, 1 1, 1 1, 2 2}

What is the expected output? What &lt;span class=&quot;code-keyword&quot;&gt;do&lt;/span&gt; you see instead?

But PersistentHashMap gets it right:

user=&amp;gt; (hash-map 1 1 1 1 1 1 2 2)
{1 1, 2 2}

What version are you using?

rev 1286.

Was &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; discussed on the group? If so, please provide a link to the 
discussion:
http:&lt;span class=&quot;code-comment&quot;&gt;//groups.google.com/group/clojure/browse_thread/
&lt;/span&gt;thread/5a38a6b61b09e025

Please provide any additional information below.

PersistentArrayMap seems to be the culprits. Line 65 to 73. They should 
probably assoc the individual items like PersistentHashMap &lt;span class=&quot;code-keyword&quot;&gt;do&lt;/span&gt;, I guess.&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13484">CLJ-87</key>
            <summary>GC  Issue 83:    PersistentArrayMap trust the reader (map literals) too much</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="richhickey">Rich Hickey</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 17 Jun 2009 22:36:00 -0500</created>
                <updated>Tue, 24 Aug 2010 00:45:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 00:45:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22711" author="importer" created="Tue, 24 Aug 2010 00:45:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/87&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/87&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
map-literals-error.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cJ9rlAc4Gr36CjeJe5aVNr/download/cJ9rlAc4Gr36CjeJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cJ9rlAc4Gr36CjeJe5aVNr/download/cJ9rlAc4Gr36CjeJe5aVNr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22712" author="importer" created="Tue, 24 Aug 2010 00:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #19, #30, #31, #126, #17, #42, #47, #50, #61, #64, #69, #71, #77, #79, #84, #87, #89, #96, #99, #103, #107, #112, #113, #114, #115, #118, #119, #121, #122, #124)&lt;/p&gt;</comment>
                    <comment id="22713" author="importer" created="Tue, 24 Aug 2010 00:45:00 -0500"  >&lt;p&gt;hiredman said: [&lt;a href=&quot;file:cJ9rlAc4Gr36CjeJe5aVNr&quot;&gt;file:cJ9rlAc4Gr36CjeJe5aVNr&lt;/a&gt;]: add error detect to reader&lt;/p&gt;</comment>
                    <comment id="22714" author="importer" created="Tue, 24 Aug 2010 00:45:00 -0500"  >&lt;p&gt;hiredman said: patch adds some error detection to the map literal reader. covers the above case and also {:a}&lt;/p&gt;</comment>
                    <comment id="22715" author="importer" created="Tue, 24 Aug 2010 00:45:00 -0500"  >&lt;p&gt;devlinsf said: Could this issue be promoted to &quot;Release - Bug Fix&quot;?&lt;/p&gt;</comment>
                    <comment id="22716" author="importer" created="Tue, 24 Aug 2010 00:45:00 -0500"  >&lt;p&gt;richhickey said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:e6e39d5931fbdf3dfa68cd2d059b8e26ce45c965&amp;#93;&lt;/span&gt;]) catch duplicate map keys for literals and hash- and array-map calls. Fixes #87&lt;/p&gt;

&lt;p&gt;Branch: master&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>

<item>
            <title>[CLJ-77] GC Issue 74:    Clojure compiler emits too-large classfiles (results in ClassFormatError)</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-77</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by cemer...@snowtide.com, Feb 10, 2009

The jvm has certain implementation limits around the maximum size of
classfiles, literal strings, method length, etc; however, in certain
circumstances, the Clojure compiler can currently emit classfiles that
violate some of those limitations, causing an error later when the
classfile is loaded.

While test coverage would necessarily detect &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; sort of problem on a
project-by-project basis when one&apos;s tests attempted to load a project&apos;s
classfiles, it seems like Clojure should &lt;span class=&quot;code-keyword&quot;&gt;do&lt;/span&gt; the following to ensure failure
as quickly as possible:

- &lt;span class=&quot;code-keyword&quot;&gt;throw&lt;/span&gt; an exception immediately &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt;, &lt;span class=&quot;code-keyword&quot;&gt;while&lt;/span&gt; compiling a lib, it is detected
that the resulting classfile(s) would violate any classfile implementation
limits.  Ideally, the exception&apos;s message would detail what file and on
which line number the offending form is (e.g. &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; a method&apos;s bytecode would
be too &lt;span class=&quot;code-object&quot;&gt;long&lt;/span&gt;).  I can imagine that doing &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; may not be straightforward; a
reasonable stop-gap would be &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; the compiler to immediately attempt to
load the generated classfile in order to ensure up-front failure.

- emit a warning &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; any clojure form is read that would, upon being
compiled, require violating any of the classfile implementation limits; I
suspect that *most* people looking to generate classfiles would be doing so
in a &lt;span class=&quot;code-quote&quot;&gt;&quot;build&quot;&lt;/span&gt; environment (rather than loading some code, tinkering, and
then using clojure.core/compile), but &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; those that aren&apos;t, I can imagine
there being a good deal of frustration around seeing that loading and using
some code successfully would eventually produce unusable classfiles.

I&apos;ve appended a sample stack trace emitted by java when it attempted to
load a too-&lt;span class=&quot;code-object&quot;&gt;long&lt;/span&gt; method implementation (which was produced by embedding a
large list literal in a compiled lib).

Exception in thread &lt;span class=&quot;code-quote&quot;&gt;&quot;main&quot;&lt;/span&gt; java.lang.ClassFormatError: Invalid method  
Code length 105496 in class file com/foo/MyClass__init
         at java.lang.&lt;span class=&quot;code-object&quot;&gt;ClassLoader&lt;/span&gt;.defineClass1(Native Method)
         at java.lang.&lt;span class=&quot;code-object&quot;&gt;ClassLoader&lt;/span&gt;.defineClass(&lt;span class=&quot;code-object&quot;&gt;ClassLoader&lt;/span&gt;.java:675)
         at  
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
         at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
         at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
         at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
         at java.lang.&lt;span class=&quot;code-object&quot;&gt;ClassLoader&lt;/span&gt;.loadClass(&lt;span class=&quot;code-object&quot;&gt;ClassLoader&lt;/span&gt;.java:316)
         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:
288)
         at java.lang.&lt;span class=&quot;code-object&quot;&gt;ClassLoader&lt;/span&gt;.loadClass(&lt;span class=&quot;code-object&quot;&gt;ClassLoader&lt;/span&gt;.java:251)
         at java.lang.&lt;span class=&quot;code-object&quot;&gt;ClassLoader&lt;/span&gt;.loadClassInternal(&lt;span class=&quot;code-object&quot;&gt;ClassLoader&lt;/span&gt;.java:
374)
         at java.lang.&lt;span class=&quot;code-object&quot;&gt;Class&lt;/span&gt;.forName0(Native Method)
         at java.lang.&lt;span class=&quot;code-object&quot;&gt;Class&lt;/span&gt;.forName(&lt;span class=&quot;code-object&quot;&gt;Class&lt;/span&gt;.java:247)
         at clojure.lang.RT.loadClassForName(RT.java:1512)
         at clojure.lang.RT.load(RT.java:394)
         at clojure.lang.RT.load(RT.java:374)
         at clojure.core$load__4911$fn__4913.invoke(core.clj:3623)
         at clojure.core$load__4911.doInvoke(core.clj:3622)
         at clojure.lang.RestFn.invoke(RestFn.java:413)
         at clojure.core$load_one__4863.invoke(core.clj:3467)
         at clojure.core$compile__4918$fn__4920.invoke(core.clj:3633)
         at clojure.core$compile__4918.invoke(core.clj:3632)
         at clojure.lang.Var.invoke(Var.java:336)
         at clojure.lang.Compile.main(Compile.java:56)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13474">CLJ-77</key>
            <summary>GC Issue 74:    Clojure compiler emits too-large classfiles (results in ClassFormatError)</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</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, 17 Jun 2009 16:16:00 -0500</created>
                <updated>Tue, 24 Aug 2010 06:45:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22678" author="importer" created="Tue, 24 Aug 2010 06:45:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/77&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/77&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22679" author="importer" created="Tue, 24 Aug 2010 06:45:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #19, #30, #31, #126, #17, #42, #47, #50, #61, #64, #69, #71, #77, #79, #84, #87, #89, #96, #99, #103, #107, #112, #113, #114, #115, #118, #119, #121, #122, #124)&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>

<item>
            <title>[CLJ-64] GC  Issue 61:    Make Clojure datatype Java Serializable</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-64</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by straszheimjeffrey, Jan 30, 2009

I mentioned &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; on Google Groups.

Currently the core Clojure datatypes are not Java Serializable.  This means
that they cannot easily be streamed as binary objects.  Also, it will be
difficult to use them with certain Java features like RMI.

Comment 1 by rob.nikander, Mar 11, 2009

I voted &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; because I&apos;m experimenting with using Clojure &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; web apps.  Tomcat barfs trying to serialize 
objects in the session, like clojure.lang.Cons.

Comment 2 by cjkent, Mar 25, 2009

I&apos;m experimenting with Clojure and Wicket.  Any Wicket page classes containing maps
that use Keywords as keys can&apos;t be saved to the session because Keyword isn&apos;t
serializable.&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13461">CLJ-64</key>
            <summary>GC  Issue 61:    Make Clojure datatype Java Serializable</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, 17 Jun 2009 23:38:00 -0500</created>
                <updated>Tue, 24 Aug 2010 14:44:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22625" author="importer" created="Tue, 24 Aug 2010 14:44:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/64&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/64&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22626" author="importer" created="Tue, 24 Aug 2010 14:44:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #19, #30, #31, #126, #17, #42, #47, #50, #61, #64, #69, #71, #77, #79, #84, #87, #89, #96, #99, #103, #107, #112, #113, #114, #115, #118, #119, #121, #122, #124)&lt;/p&gt;</comment>
                    <comment id="22627" author="importer" created="Tue, 24 Aug 2010 14:44:00 -0500"  >&lt;p&gt;cemerick said: A patch has been submitted (via ticket #174) to add Serializable support to c.l.Keyword.&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>

<item>
            <title>[CLJ-61] GC Issue 57: Compiler internal error when expanding macro: class not found</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-61</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by tuomas.lukka, Jan 29, 2009
 
------------------------------

What (small set of) steps will reproduce the problem?

Run the following code:

(defmacro b [] (let [ x (fn [] []) ] x))
(def a (fn [] (b)))


What is the expected output? What &lt;span class=&quot;code-keyword&quot;&gt;do&lt;/span&gt; you see instead?

I&apos;d expect it to either pass or give a proper error. What I get
is

Exception in thread &lt;span class=&quot;code-quote&quot;&gt;&quot;main&quot;&lt;/span&gt; java.lang.ExceptionInInitializerError (test.clj:2)
 at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;$DefExpr.eval(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:308)
 at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.eval(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:4147)
 at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.load(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:4470)
 at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.loadFile(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:4437)
 at clojure.lang.Script.main(Script.java:65)
Caused by: java.lang.ExceptionInInitializerError
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
 at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
 at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
 at java.lang.&lt;span class=&quot;code-object&quot;&gt;Class&lt;/span&gt;.newInstance0(&lt;span class=&quot;code-object&quot;&gt;Class&lt;/span&gt;.java:355)
 at java.lang.&lt;span class=&quot;code-object&quot;&gt;Class&lt;/span&gt;.newInstance(&lt;span class=&quot;code-object&quot;&gt;Class&lt;/span&gt;.java:308)
 at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;$FnExpr.eval(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:3218)
 at clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;$DefExpr.eval(&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:297)
 ... 4 more
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException:
clojure.core$b__1$x__3
 at clojure.lang.RT.readString(RT.java:1192)
 at clojure.core$a__7.&amp;lt;clinit&amp;gt;(test.clj:2)
 ... 12 more
Caused by: java.lang.ClassNotFoundException: clojure.core$b__1$x__3
 at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
 at clojure.lang.DynamicClassLoader.findClass(DynamicClassLoader.java:52)
 at java.lang.&lt;span class=&quot;code-object&quot;&gt;ClassLoader&lt;/span&gt;.loadClass(&lt;span class=&quot;code-object&quot;&gt;ClassLoader&lt;/span&gt;.java:307)
 at java.lang.&lt;span class=&quot;code-object&quot;&gt;ClassLoader&lt;/span&gt;.loadClass(&lt;span class=&quot;code-object&quot;&gt;ClassLoader&lt;/span&gt;.java:252)
 at java.lang.&lt;span class=&quot;code-object&quot;&gt;ClassLoader&lt;/span&gt;.loadClassInternal(&lt;span class=&quot;code-object&quot;&gt;ClassLoader&lt;/span&gt;.java:320)
 at java.lang.&lt;span class=&quot;code-object&quot;&gt;Class&lt;/span&gt;.forName0(Native Method)
 at java.lang.&lt;span class=&quot;code-object&quot;&gt;Class&lt;/span&gt;.forName(&lt;span class=&quot;code-object&quot;&gt;Class&lt;/span&gt;.java:247)
 at clojure.lang.RT.classForName(RT.java:1506)
 at clojure.lang.LispReader$EvalReader.invoke(LispReader.java:908)
 at clojure.lang.LispReader$DispatchReader.invoke(LispReader.java:530)
 at clojure.lang.LispReader.read(LispReader.java:143)
 at clojure.lang.RT.readString(RT.java:1188)
 ... 13 more


What version are you using?

20081217

Was &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; discussed on the group? If so, please provide a link to the
discussion:

no&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13458">CLJ-61</key>
            <summary>GC Issue 57: Compiler internal error when expanding macro: class not found</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 17 Jun 2009 00:31:00 -0500</created>
                <updated>Tue, 24 Aug 2010 03:44:00 -0500</updated>
                    <resolved>Tue, 24 Aug 2010 03:44:00 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22618" author="importer" created="Tue, 24 Aug 2010 03:44:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/61&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/61&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22619" author="importer" created="Tue, 24 Aug 2010 03:44:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #19, #30, #31, #126, #17, #42, #47, #50, #61, #64, #69, #71, #77, #79, #84, #87, #89, #96, #99, #103, #107, #112, #113, #114, #115, #118, #119, #121, #122, #124)&lt;/p&gt;</comment>
                    <comment id="22620" author="importer" created="Tue, 24 Aug 2010 03:44:00 -0500"  >&lt;p&gt;stu said: The code appears to run correctly against current master.&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>

<item>
            <title>[CLJ-50] GC Issue 46: callable defstruct (PersistentStructMap$Def extends AFn)</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-50</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by chouser, Jan 15, 2009
Describe the feature/change.

This much works already:
(defstruct rect :width :height)
(struct rect 5 10)  ==&amp;gt; {:width 5, :height 10}

With the included patch you can also:
(rect 5 10)  ==&amp;gt; {:width 5, :height 10}

Was &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; discussed on the group? If so, please provide a link to the
discussion:

http:&lt;span class=&quot;code-comment&quot;&gt;//groups.google.com/group/clojure/browse_thread/thread/12a138ad58ff6c36/b20b68ef939fccf7
&lt;/span&gt;
Comment 1 by chouser, Jan 15, 2009
Forgot the patch attachment.
 structmap-def-&lt;span class=&quot;code-keyword&quot;&gt;extends&lt;/span&gt;-restfn.patch
923 bytes Download&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13447">CLJ-50</key>
            <summary>GC Issue 46: callable defstruct (PersistentStructMap$Def extends AFn)</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 17 Jun 2009 23:21:00 -0500</created>
                <updated>Mon, 15 Nov 2010 08:14:04 -0600</updated>
                    <resolved>Mon, 15 Nov 2010 08:14:04 -0600</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22591" author="importer" created="Tue, 24 Aug 2010 14:44:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/50&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/50&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
structmap-def-extends-restfn.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/aFFlyCw3qr3R14eJe5aVNr/download/aFFlyCw3qr3R14eJe5aVNr&quot;&gt;https://www.assembla.com/spaces/clojure/documents/aFFlyCw3qr3R14eJe5aVNr/download/aFFlyCw3qr3R14eJe5aVNr&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22592" author="importer" created="Tue, 24 Aug 2010 14:44:00 -0500"  >&lt;p&gt;cemerick said: [&lt;a href=&quot;file:aFFlyCw3qr3R14eJe5aVNr&quot;&gt;file:aFFlyCw3qr3R14eJe5aVNr&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="22593" author="importer" created="Tue, 24 Aug 2010 14:44:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #19, #30, #31, #126, #17, #42, #47, #50, #61, #64, #69, #71, #77, #79, #84, #87, #89, #96, #99, #103, #107, #112, #113, #114, #115, #118, #119, #121, #122, #124)&lt;/p&gt;</comment>
                    <comment id="22594" author="importer" created="Tue, 24 Aug 2010 14:44:00 -0500"  >&lt;p&gt;richhickey said: I&apos;m not sure I want to touch structmaps prior to implements&lt;/p&gt;</comment>
                    <comment id="25941" author="chouser@n01se.net" created="Sun, 14 Nov 2010 21:22:54 -0600"  >&lt;p&gt;This ticket has survived almost two years, two bug tracker migrations&lt;span class=&quot;error&quot;&gt;&amp;#91;1&amp;#93;&lt;/span&gt; and now who uses structs anymore?  Records have essentially this syntax for their ctors.  I nominate this ticket be closed as &quot;wontfix&quot; or equivalent.&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;1&amp;#93;&lt;/span&gt;: &lt;a href=&quot;http://code.google.com/p/clojure/issues/detail?id=46&quot;&gt;http://code.google.com/p/clojure/issues/detail?id=46&lt;/a&gt;&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="10013">Test</customfieldvalue>

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

<item>
            <title>[CLJ-21] GC Issue 17: arity checking during compilation</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-21</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by richhickey, Dec 17, 2008
Use available metadata to check calls when possible&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13418">CLJ-21</key>
            <summary>GC Issue 17: arity checking during compilation</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, 17 Jun 2009 22:59:00 -0500</created>
                <updated>Tue, 24 Aug 2010 14:44:00 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22519" author="importer" created="Tue, 24 Aug 2010 14:44:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/21&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/21&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>

<item>
            <title>[CLJ-19] GC Issue 15: JavaDoc for interfaces</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-19</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by richhickey, Dec 17, 2008
Add JavaDoc to those interfaces supported &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt; use - IFn,
IPersistentCollection etc.&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13416">CLJ-19</key>
            <summary>GC Issue 15: JavaDoc for interfaces</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, 17 Jun 2009 14:58:00 -0500</created>
                <updated>Sat, 17 Nov 2012 20:05:58 -0600</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="22508" author="importer" created="Tue, 24 Aug 2010 06:44:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/19&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/19&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22509" author="importer" created="Tue, 24 Aug 2010 06:44:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #19, #30, #31, #126, #17, #42, #47, #50, #61, #64, #69, #71, #77, #79, #84, #87, #89, #96, #99, #103, #107, #112, #113, #114, #115, #118, #119, #121, #122, #124)&lt;/p&gt;</comment>
                    <comment id="29959" author="hiredman" created="Sat, 17 Nov 2012 20:05:58 -0600"  >&lt;p&gt;this seems like a great task for someone just starting out contributing to clojure.&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>

<item>
            <title>[CLJ-17] GC Issue 13: validate in (keyword s) and (symbol s)</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-17</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by richhickey, Dec 17, 2008
Make sure they create readable keywords/symbols

Comment 1 by p...@hagelb.org, Apr 27, 2009
Could &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; be done with a regex, or should it &lt;span class=&quot;code-keyword&quot;&gt;try&lt;/span&gt; to confirm the name using the reader?
Comment 2 by p...@hagelb.org, Apr 27, 2009
I&apos;ve implemented &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; in the attached patch. One thing that could be improved is that
invalid names simply raise an Exception, though it seems LispReader&apos;s ReaderException
would be more appropriate. I wasn&apos;t sure how to raise that though since it needs a
line number; it&apos;s not clear how to get the current line number.

The patch is still an improvement on the current state of things, though I&apos;d
appreciate a tip as to how to raise the right exception.

I&apos;ve also attached a patch to the test suite that ensures (symbol s) and (keyword s)
work properly in the context of invalid names. I can re-submit &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; to the contrib
project &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; that&apos;s desired &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; the core patch is accepted.
 0001-Test-invalid-symbol-keyword-names-raise-exceptions.patch
1.6 KB Download
Comment 3 by p...@hagelb.org, Apr 27, 2009
Last patch had a problem; used things like defn- etc. before they were defined in
core.clj. This attachment fixes that.
 validate-symbol-keyword-names.patch
2.1 KB Download
Comment 4 by p...@hagelb.org, Jun 13 (3 days ago)
This exists as a git branch too now: 
http:&lt;span class=&quot;code-comment&quot;&gt;//github.com/technomancy/clojure/tree/validate-symbols-issue-13&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13414">CLJ-17</key>
            <summary>GC Issue 13: validate in (keyword s) and (symbol s)</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="-1">Unassigned</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Wed, 17 Jun 2009 11:56:00 -0500</created>
                <updated>Fri, 7 Oct 2011 08:03:06 -0500</updated>
                    <resolved>Fri, 7 Oct 2011 08:03:05 -0500</resolved>
                                            <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="22498" author="importer" created="Tue, 28 Sep 2010 06:50:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/17&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/17&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
0001-Test-invalid-symbol-keyword-names-raise-exceptions.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cpC-Qow3ar3P8LeJe5afGb/download/cpC-Qow3ar3P8LeJe5afGb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cpC-Qow3ar3P8LeJe5afGb/download/cpC-Qow3ar3P8LeJe5afGb&lt;/a&gt;&lt;br/&gt;
validate-symbol-keyword-names.patch - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/cpDbtWw3ar3P8LeJe5afGb/download/cpDbtWw3ar3P8LeJe5afGb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/cpDbtWw3ar3P8LeJe5afGb/download/cpDbtWw3ar3P8LeJe5afGb&lt;/a&gt;&lt;br/&gt;
17-validate-keywords-symbols.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/d61sHuVFer3OGKeJe5afGb/download/d61sHuVFer3OGKeJe5afGb&quot;&gt;https://www.assembla.com/spaces/clojure/documents/d61sHuVFer3OGKeJe5afGb/download/d61sHuVFer3OGKeJe5afGb&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="22499" author="importer" created="Tue, 28 Sep 2010 06:50:00 -0500"  >&lt;p&gt;cemerick said: [&lt;a href=&quot;file:cpC-Qow3ar3P8LeJe5afGb&quot;&gt;file:cpC-Qow3ar3P8LeJe5afGb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="22500" author="importer" created="Tue, 28 Sep 2010 06:50:00 -0500"  >&lt;p&gt;cemerick said: [&lt;a href=&quot;file:cpDbtWw3ar3P8LeJe5afGb&quot;&gt;file:cpDbtWw3ar3P8LeJe5afGb&lt;/a&gt;]&lt;/p&gt;</comment>
                    <comment id="22501" author="importer" created="Tue, 28 Sep 2010 06:50:00 -0500"  >&lt;p&gt;richhickey said: Updating tickets (#8, #19, #30, #31, #126, #17, #42, #47, #50, #61, #64, #69, #71, #77, #79, #84, #87, #89, #96, #99, #103, #107, #112, #113, #114, #115, #118, #119, #121, #122, #124)&lt;/p&gt;</comment>
                    <comment id="22502" author="importer" created="Tue, 28 Sep 2010 06:50:00 -0500"  >&lt;p&gt;technomancy said: These patches no longer cleanly apply. Working on an updated version.&lt;/p&gt;</comment>
                    <comment id="22503" author="importer" created="Tue, 28 Sep 2010 06:50:00 -0500"  >&lt;p&gt;technomancy said: [&lt;a href=&quot;file:d61sHuVFer3OGKeJe5afGb&quot;&gt;file:d61sHuVFer3OGKeJe5afGb&lt;/a&gt;]: test and implementation&lt;/p&gt;</comment>
                    <comment id="22504" author="importer" created="Tue, 28 Sep 2010 06:50:00 -0500"  >&lt;p&gt;richhickey said: I just wonder if we can afford the overhead of this validation all the time&lt;/p&gt;</comment>
                    <comment id="22505" author="importer" created="Tue, 28 Sep 2010 06:50:00 -0500"  >&lt;p&gt;richhickey said: Anyone have any bright ideas on how to avoid the overhead?&lt;/p&gt;</comment>
                    <comment id="22506" author="importer" created="Tue, 28 Sep 2010 06:50:00 -0500"  >&lt;p&gt;cemerick said: I&apos;m sure this was brought up a long time ago in prior discussions, but: should validity of symbols and keywords even be defined?  Insofar as libraries use them for naming things, especially as read from external representations (e.g. XML, RDF, SGML, etc), it seems like any validation would be an entirely artificial limitation.&lt;/p&gt;

&lt;p&gt;For my money, having keywords and symbols print in a failsafe-readable way, e.g. #|symbol with whitespace| (maybe checking at print-time to see if the more common printing is suitable, as would be most common) would:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;guarantee that symbols and keywords are readably printable&lt;/li&gt;
	&lt;li&gt;not limit libraries from using keywords and such in very convenient ways&lt;/li&gt;
	&lt;li&gt;provide a pleasant shortcut for using symbols and keywords that might not be &quot;valid&quot;, but still somehow necessary&lt;/li&gt;
&lt;/ul&gt;
</comment>
                    <comment id="26907" author="richhickey" created="Fri, 7 Oct 2011 08:03:06 -0500"  >&lt;p&gt;Runtime validation off the table for perf reasons. cemerick&apos;s suggestion that arbitrary symbol support will render them valid is sound, but arbitrary symbol support is a different ticket/idea.&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="10013">Test</customfieldvalue>

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

<item>
            <title>[CLJ-15] GC Issue 11: incremental hashcode calculation for collections</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-15</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Reported by richhickey, Dec 17, 2008
So hachCode can be &lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt;, more efficient to calc as you go.&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="13412">CLJ-15</key>
            <summary>GC Issue 11: incremental hashcode calculation for collections</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, 17 Jun 2009 11:55:00 -0500</created>
                <updated>Fri, 8 Mar 2013 06:20:08 -0600</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>2</watches>
                        <comments>
                    <comment id="22495" author="importer" created="Tue, 24 Aug 2010 03:44:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/15&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/15&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="30715" author="cgrand" created="Fri, 8 Mar 2013 06:20:08 -0600"  >&lt;p&gt;Wouldn&apos;t the naive approach incur realizing lazy sequences when adding them to a list or a vector or as values in a map?&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>

<item>
            <title>[CLJ-5] Unintuitive error response in clojure 1.0</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-5</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;The following broken code:&lt;/p&gt;

&lt;p&gt;(let [&lt;span class=&quot;error&quot;&gt;&amp;#91;x y&amp;#93;&lt;/span&gt; {}] x)&lt;/p&gt;

&lt;p&gt;provides the following stack trace:&lt;/p&gt;

&lt;p&gt;Exception in thread &quot;main&quot; java.lang.UnsupportedOperationException: nth not supported on this type: PersistentArrayMap (test.clj:0)&lt;br/&gt;
        at clojure.lang.Compiler.eval(Compiler.java:4543)&lt;br/&gt;
        at clojure.lang.Compiler.load(Compiler.java:4857)&lt;br/&gt;
        at clojure.lang.Compiler.loadFile(Compiler.java:4824)&lt;br/&gt;
        at clojure.main$load_script__5833.invoke(main.clj:206)&lt;br/&gt;
        at clojure.main$script_opt__5864.invoke(main.clj:258)&lt;br/&gt;
        at clojure.main$main__5888.doInvoke(main.clj:333)&lt;br/&gt;
        at clojure.lang.RestFn.invoke(RestFn.java:413)&lt;br/&gt;
        at clojure.lang.Var.invoke(Var.java:346)&lt;br/&gt;
        at clojure.lang.AFn.applyToHelper(AFn.java:173)&lt;br/&gt;
        at clojure.lang.Var.applyTo(Var.java:463)&lt;br/&gt;
        at clojure.main.main(main.java:39)&lt;br/&gt;
Caused by: java.lang.UnsupportedOperationException: nth not supported on this type: PersistentArrayMap&lt;br/&gt;
        at clojure.lang.RT.nth(RT.java:800)&lt;br/&gt;
        at clojure.core$nth__3578.invoke(core.clj:873)&lt;br/&gt;
        at user$eval__1.invoke(test.clj:1)&lt;br/&gt;
        at clojure.lang.Compiler.eval(Compiler.java:4532)&lt;br/&gt;
        ... 10 more&lt;/p&gt;

&lt;p&gt;The message &quot;nth not supported on this type&quot; while correct doesn&apos;t make the cause of the error very clear.  Better error messages when destructuring would be very helpful.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13402">CLJ-5</key>
            <summary>Unintuitive error response in clojure 1.0</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="importer">Assembla Importer</reporter>
                        <labels>
                    </labels>
                <created>Wed, 17 Jun 2009 02:35:00 -0500</created>
                <updated>Sat, 28 Apr 2012 22:48:40 -0500</updated>
                                                    <fixVersion>Backlog</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>2</watches>
                        <comments>
                    <comment id="22468" author="importer" created="Tue, 24 Aug 2010 10:44:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/5&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/5&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="27279" author="ekoontz" created="Fri, 11 Nov 2011 19:36:54 -0600"  >&lt;p&gt;Please see the attached patch which produces a (hopefully more clear) error message as shown below (given the broken code shown in the original bug report):&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Clojure 1.4.0-master-SNAPSHOT
user=&amp;gt; (let [x 42 y 43] (+ x y))
85
user=&amp;gt; (let [[x y] {}] x)
UnsupportedOperationException left side of binding must be a symbol (found a PersistentVector instead).  clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.checkLet (&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6545)
user=&amp;gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;In addition, this patch checks the argument of (let) as shown below:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;user=&amp;gt; (let 42)
UnsupportedOperationException argument to (let)  must be a vector (found a &lt;span class=&quot;code-object&quot;&gt;Long&lt;/span&gt; instead).  clojure.lang.&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.checkLet (&lt;span class=&quot;code-object&quot;&gt;Compiler&lt;/span&gt;.java:6553)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="27280" author="ekoontz" created="Fri, 11 Nov 2011 19:38:24 -0600"  >&lt;p&gt;Patch produced by doing git diff against commit ba930d95fc (master branch).&lt;/p&gt;</comment>
                    <comment id="27290" author="ekoontz" created="Sun, 13 Nov 2011 23:24:45 -0600"  >&lt;p&gt;Sorry, this patch is wrong: it assumes that the left side of the binding is wrong - the &lt;tt&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;x y&amp;#93;&lt;/span&gt;&lt;/tt&gt; in :&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(let [[x y] {}] x)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;because &lt;tt&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;x y&amp;#93;&lt;/span&gt;&lt;/tt&gt; is a vector, when in fact, the left side is fine (per &lt;a href=&quot;http://clojure.org/special_forms#let&quot;&gt;http://clojure.org/special_forms#let&lt;/a&gt; : &quot;Clojure supports abstract structural binding, often called destructuring, in let binding lists&quot;.)&lt;/p&gt;

&lt;p&gt;So it&apos;s the right side (the {}) that needs to be checked and flagged as erroneous, not the &lt;tt&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;x y&amp;#93;&lt;/span&gt;&lt;/tt&gt;.&lt;/p&gt;</comment>
                    <comment id="27374" author="carinmeier" created="Wed, 30 Nov 2011 12:15:24 -0600"  >&lt;p&gt;Add patch better-error-for-let-vector-map-binding&lt;/p&gt;

&lt;p&gt;This produces the following:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(let [[x y] {}] x)
Exception map binding to vector is not supported&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;There are other cases that are not handled by this though &amp;#8212; like binding vector to a set&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;user=&amp;gt; (let [[x y] #{}] x)
UnsupportedOperationException nth not supported on &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; type: PersistentHashSet&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Wondering if it might be better to try convert the map to a seq to support?  Although this might be another issue.&lt;/p&gt;

&lt;p&gt;Thoughts?&lt;/p&gt;</comment>
                    <comment id="27381" author="aaron" created="Wed, 30 Nov 2011 19:12:37 -0600"  >&lt;p&gt;This seems too specific. Is this issue indicative of a larger problem that should be addressed? Even if this is the only case where bindings produce poor error messages, all the cases described above should be addressed in the patch.  &lt;/p&gt;</comment>
                    <comment id="27473" author="carinmeier" created="Fri, 16 Dec 2011 07:47:56 -0600"  >&lt;p&gt;Unfortunately, realized that this still does not cover the nested destructuring cases.  Coming to the conclusion, that my approach above is not going to work for this.&lt;/p&gt;</comment>
                    <comment id="28309" author="carinmeier" created="Sat, 28 Apr 2012 22:46:34 -0500"  >&lt;p&gt;File: clj-5-destructure-error.diff &lt;/p&gt;

&lt;p&gt;Added support for nested destructuring errors&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;let [[[x1 y1][x2 y2]] [[1 2] {}]]
;=&amp;gt; UnsupportedOperationException let cannot destructure class clojure.lang.PersistentArrayMap.&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11124" name="clj-5-destructure-error.diff" size="5796" author="carinmeier" created="Sat, 28 Apr 2012 22:46:34 -0500" />
                    <attachment id="10697" name="CLJ-5.patch" size="2009" author="ekoontz" created="Fri, 11 Nov 2011 19:38:24 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10006">Incomplete</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>
</channel>
</rss>