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