"For"失败但"循环"有效

Dan*_*ner 3 clojure

我想使用SQLKorma执行一些SQL语句.起初我写了以下代码:

(let [sqls (-> (slurp "resources/database.sql")
              (str/split #";")
              butlast)]
  (for [sql sqls]
      (k/exec-raw sql)))
Run Code Online (Sandbox Code Playgroud)

但由于原因不明,这不起作用.for循环完全被跳过.但这有效:

(let [sqls (-> (slurp "resources/database.sql")
              (str/split #";")
              butlast)]
  (loop [sqls sqls]
    (if (not (empty? sqls))
      (do
        (k/exec-raw (first sqls))
        (recur (rest sqls))))))
Run Code Online (Sandbox Code Playgroud)

为什么会这样?为什么for循环失败?

mty*_*aka 8

for很懒.doseq改为使用:

(doseq [sql sqls]
  (k/exec-raw sql))
Run Code Online (Sandbox Code Playgroud)