Hi, I am trying to write myself something to generate some test data, and I thought clojure.core logic fits the bill ... unfortunately, for some reason, it doesn't work.
In my project.clj: [org.clojure/clojure "1.5.0"] [org.clojure/core.logic "0.8.3"] in my namespace: (ns tests.search (:require [clojure.set :refer [intersection difference union project select]] [clojure.core.logic :as l])) (def search-table ((fn [header table] (into #{} (map #(zipmap header %1) table))) [:title :type :severity] [[ "Squirrel" "enhancement" "low"] [ "Camel" "security" "important"] [ "Dog" "security" "critical"] [ "Cow" "bugfix" "moderate"]])) Now, I try to generate pairs [query result] with logic programming. (l/run 1 [test-line] (l/fresh [query result] (l/== query ["\"" result "\""]) (l/membero result (map :name (project errata-search-table [:name]))) (l/== test-line [query result]))) >> ([["\"" "Squirrell" "\""] "Squirrell"]) But I can't figure out how to force query to unify to a string: (l/run 1 [test-line] (l/fresh [query result] (l/== query (str "\"" result "\"")) (l/membero result (map :name (project errata-search-table [:name]))) (l/== test-line [query result]))) >> (["\"<lvar:result__11616>\"" "Squirrell"]) When I asked on freenode, I got this response: <hyPiRion> asaleh: str is impure, using e.g. (fresh [x y] (== y (str x))) won't work Thanks, Adam -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.