A small change here:
~~~{.clojure}
(cond (valid-solution? board) [board]
      (filled? board) []
     :else (let [i (find-empty-point board)]
        (first
           (for [value (valid-values-for board i)]
               (solve-helper (set-value-at board i value)))))
~~~