Hey David,

I don't quite understand how I would apply your suggestion this with my 
example.

1. So the "all" function creates a choice point. How do I create lvars? I 
tried:

(run* [q]
  (let [vars (repeatedly 3 #(gensym 'x))]
    (all
      (== q vars))))

;=> ((x4388 x4389 x4390))

Shouldn't I get unbound lvars ((_.0 _.1 _.2)) back? What type should an 
lvar be?

2. How do I call the other goals, like infd and distinctfd?

I tried:

(run* [q]
  (let [vars (repeatedly 5 #(gensym 'x))]
    (all 
        (infd vars (interval 1 3))
        (distinctfd vars)
        (== q vars))))

But this gave an error:

java.lang.ClassCastException: clojure.lang.LazySeq cannot be cast to 
java.lang.Number
 at clojure.lang.Numbers.gte (Numbers.java:231)
    clojure.core.logic.IntervalFD.member_QMARK_ (logic.clj:499)
    clojure.core.logic$process_dom$fn__3874.invoke (logic.clj:2959)
    clojure.core.logic$composeg$fn__3102.invoke (logic.clj:1516)
    clojure.core.logic$domfd$fn__3877.invoke (logic.clj:2971)
    clojure.core.logic.Substitutions.bind (logic.clj:1051)


functional programming FTW ;)
>

I'd love to apply what I've learned about Clojure – but for now, once I'm 
in a "run*" I enter a mystical land of fairies and butterflies where none 
of the functional rules apply :-)

Thanks for your help,

Frederik


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

Reply via email to