<!-- 
RSS generated by JIRA (4.4#649-r158309) at Wed Jun 19 05:11:07 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-108/LOGIC-108.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-108] featurec or something similar to provide recursive partial partial map constraints</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-108</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description></description>
                <environment></environment>
            <key id="15977">LOGIC-108</key>
            <summary>featurec or something similar to provide recursive partial partial map constraints</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="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="hiredman">Kevin Downey</reporter>
                        <labels>
                    </labels>
                <created>Thu, 24 Jan 2013 15:57:02 -0600</created>
                <updated>Sun, 17 Mar 2013 19:50:16 -0500</updated>
                    <resolved>Sun, 17 Mar 2013 19:50:16 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="30479" author="dnolen" created="Thu, 24 Jan 2013 15:58:29 -0600"  >&lt;p&gt;Basically, it should be ok for the `fs` argument to a be a nested map.&lt;/p&gt;</comment>
                    <comment id="30489" author="hiredman" created="Sat, 26 Jan 2013 18:03:23 -0600"  >&lt;p&gt;the following seems to be pretty close:&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;    (defn rfeaturec [m f]
      (let [new-f (reduce (fn [m [k v]]
                            (assoc m k (logic/lvar (name k)))) {} (seq f))]
        (logic/fresh []
          (logic/featurec m new-f)
          (fn [s]
            (logic/to-stream
              (for [[k lvar] new-f]
                ((let [v (get f k)]
                   (if (map? v)
                     (logic/fresh [x]
                       (logic/featurec m {k lvar})
                       (rfeaturec lvar v))
                     (logic/== lvar v))) s)))))))
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="30494" author="hiredman" created="Sun, 27 Jan 2013 00:13:06 -0600"  >&lt;p&gt;the above falls apart quickly under use, the below works well so far:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;(defn rfeaturec [m f]
  (let [new-f (reduce (fn [m [k v]] (assoc m k (logic/lvar (name k)))) {} (seq f))]
    (logic/fresh []
      (logic/featurec m new-f)
      (logic/everyg
       (fn [[k lvar]]
         (let [v (get f k)]
           (if (map? v)
             (logic/fresh []
               (logic/featurec m {k lvar})
               (rfeaturec lvar v))
             (logic/== lvar v))))
       new-f))))
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="30500" author="dnolen" created="Sun, 27 Jan 2013 18:43:32 -0600"  >&lt;p&gt;recursive featurec should work by recursively applying constraints like you&apos;ve done but by using the lower level apis - we don&apos;t want to put the search language into a constraint.&lt;/p&gt;</comment>
                    <comment id="30792" author="dnolen" created="Sun, 17 Mar 2013 19:50:16 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/d5eda7d7f89443b449d7955a76e72828561082f6&quot;&gt;http://github.com/clojure/core.logic/commit/d5eda7d7f89443b449d7955a76e72828561082f6&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>
</channel>
</rss>