Clojure:boot-won';t显示日志

Clojure:boot-won';t显示日志,clojure,Clojure,我正在为我的爱好项目写一些Clojure。现在,我正在实施用于迁移sql文件的引导任务 我有以下处理迁移的代码 ; when executed from repl logs whatever printed by println (defn migrate-pending [config] (if (migration-table-exists? config) (for [to-migrate (get-pending-migrations config)] (migr

我正在为我的爱好项目写一些Clojure。现在,我正在实施用于迁移sql文件的引导任务

我有以下处理迁移的代码

; when executed from repl logs whatever printed by println
(defn migrate-pending [config]
  (if (migration-table-exists? config)
    (for [to-migrate (get-pending-migrations config)]
      (migrate to-migrate config))
    (create-migration-table config)))

; this consumes the log
(core/deftask migrate
  "Migrate up"
  []
  (migrate-pending pg-uri))
migrate
函数只打印它得到的值
boot
似乎会消耗日志,但通过
repl
执行时会打印日志


这是预期的吗?

您不应该做一些对有副作用的事情,因为这会“产生一个延迟的expr求值序列”。您应该改用
doseq


比编写打印内容的函数更好的是编写返回内容的函数。

您不应该做一些与
for
有副作用的事情,因为这会“产生一个延迟的expr求值序列”。您应该改用
doseq


比编写打印内容的函数更好的是编写返回内容的函数。

您也可以尝试使用dorun函数包装,它会增强任何副作用


您也可以尝试使用dorun函数包装,它会增强任何副作用


如果用
doseq
替换
for
,是否会改变情况?如果用
doseq
替换
for
,是否会改变情况?这会引发异常
无法解析符号:在该上下文中迁移
这会引发异常
无法解析符号:在此上下文中迁移