I had some trouble because all goals need to take in the list of lvars. 
`infd` doesn't take in a list, but your sudoku blog post has `all-infd` 
which does the trick:

    (defn all-infd 
      "Assign a domain to all vars."
      [vars domain]
      (if (seq vars)
        (all
          (domfd (first vars) domain)
          (all-infd (next vars) domain))
        succeed))

Which means that `distinct-numbers` can be written as such:

    (defn distinct-numbers [n min max]
      "Generate all combinations of n numbers between min and max."
      (run* [q]
        (let [vars (repeatedly n lvar)]
          (all
            (all-infd vars (interval min max))
            (distinctfd vars)
            (== q vars)))))


    user=> (distinct-numbers 3 6 8)
    ((6 7 8) (6 8 7) (7 6 8) (7 8 6) (8 6 7) (8 7 6))

Thanks for the 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