Just answering myself found i should bind with choice as it is done in reifyg
(defn export [out vs gs] (fn [a] (let [a' (bind a gs) as (take* (bind a' (fn [s] *(choice (walk* s vs)* * empty-f)*)))] (bind a (== out as))))) On Tuesday, January 3, 2017 at 4:14:20 PM UTC-3, Paulo César Cuneo wrote: > > I was hacking around with core.logic, trying to implement a "bind var in > sub process". > > So that this this succeeds: > (run [q] > (fresh[a] > (runsub [q] ;; will "export 'q" or "bind 'q in > caller context" > [(== a 1) (== q 1)]) ;; 'a will be bound only inside this > context > (lvaro a))) ;; 'a is not bind in caller context > (1) > > I didn't want to do term replacement, so i figure i could run goals an > return the original substitution. > (fn[a] > (let[ a' (take* (reduce bind a goals))] > (magic-happens q a' a) ;; generate an mplus binding lvar q with a' > values inside a. > ) > > Anyway :D haha. > > I found that, take* throws an exception because > > > (let [x (lvar) > as (tramp (-> empty-s > ((conde [(== x 1)] > [(== x 2)])))) > ls (take* as)] > ls) > (#object[clojure.core.logic.Substitutions 0x7c509c4b "{<lvar:28932> > 1}"]*AbstractMethodError > clojure.lang.RT.seqFrom (RT.java:533)* > > > > It happens because : > (deftype Substitutions > .... > ITake > (take* [ this ] this) ;; why not seqable? > > Seems easy to fix, but i bet there be code depending on return not being a > seqable. > (take* [ this ] [this]) > > Bye. > -- 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/d/optout.