<!-- 
RSS generated by JIRA (4.4#649-r158309) at Wed Jun 19 06:06:56 CDT 2013

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

<item>
            <title>[LOGIC-113] A conde clause that beings with a fresh expression will initially fail</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-113</link>
                <project id="10020" key="LOGIC">core.logic</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;(ns test                                                                                                                                                                          
  (:refer-clojure :exclude [==])                                                                                                                                                  
  (:require                                                                                                                                                                       
   [clojure.core.logic :refer :all]))                                                                                                                                             

;; This expression should evaluate to &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;, but it does not, 
;; because the second run* returns (2 1) instead of (1 2).
                                                                                                                                                                                  
(= (run* [q]                                                                                                                                                                      
     (conde                                                                                                                                                                       
       [(== q 1)]                                                                                                                                                                 
       [(== q 2)]))                                                                                                                                                               
   (run* [q]                                                                                                                                                                      
     (conde                                                                                                                                                                       
       [(fresh [a] (== q 1))]                                                                                                                                                     
       [(== q 2)])))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment>tested against HEAD (0.8.0-rc3-SNAPSHOT) and CLJ 1.5.0-RC15</environment>
            <key id="16009">LOGIC-113</key>
            <summary>A conde clause that beings with a fresh expression will initially fail</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="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="austinhaas">Austin Haas</reporter>
                        <labels>
                    </labels>
                <created>Wed, 13 Feb 2013 23:49:43 -0600</created>
                <updated>Fri, 15 Feb 2013 12:49:03 -0600</updated>
                    <resolved>Fri, 15 Feb 2013 12:49:03 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="30592" author="dnolen" created="Thu, 14 Feb 2013 00:13:16 -0600"  >&lt;p&gt;This is not an error. No promises are made about the order of results. If you want need to verify that two runs are the same it&apos;s best to put the results into a set - we actually do this in the tests now.&lt;/p&gt;</comment>
                    <comment id="30593" author="austinhaas" created="Thu, 14 Feb 2013 01:14:19 -0600"  >
&lt;p&gt;Shouldn&apos;t the programmer be able to reason about the order that the clauses will be tried? That&apos;s one way to direct the search and I know at least one example in TRS highlights that aspect--in Ch. 5, unwrapo is re-written to push the recursive call down, otherwise it diverges. How could you know that goal will terminate if you can&apos;t reason about the order of the clauses? I assume it is much more difficult to write exclusively non-overlapping clauses.&lt;/p&gt;

&lt;p&gt;Likewise, shouldn&apos;t the programmer be able to design a logic program so that it produces a predictable first result?&lt;/p&gt;

&lt;p&gt;This is all very new to me, so please forgive me if I&apos;m way off.&lt;/p&gt;</comment>
                    <comment id="30596" author="dnolen" created="Thu, 14 Feb 2013 08:57:45 -0600"  >&lt;p&gt;miniKanren makes no promises about order anymore, Will actually talks about this in his dissertation. It&apos;s part of the design and leaves the door wide open for concurrent search when we get there.&lt;/p&gt;

&lt;p&gt;Even so, I do understand there are cases where the programmer might want more control than is provided by the default behavior. Customizable search is on the roadmap.&lt;/p&gt;

&lt;p&gt;But the current default behavior is expected and unlikely to change.&lt;/p&gt;</comment>
                    <comment id="30609" author="dnolen" created="Fri, 15 Feb 2013 12:49:03 -0600"  >&lt;p&gt;Not a bug.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>
</channel>
</rss>