2024 Clojure 状态调查问卷 中分享您的想法!

欢迎!有关如何使用本站的更多信息,请查看关于页面。

+1 投票
Clojure

我已经在 Clojure 1.12 RC 中大量使用 clojure.java.process,在 clojure 中直接内置该功能真是太棒了。

我经常发现自己需要一个完整交互式进程,直到退出为止。例如

(require '[clojure.java.process :as p])
(let [p (p/start
            {:in  :inherit
             :out :inherit
             :err :inherit}
            "bash")]
    @(p/exit-ref p))

将您的 repl 变成一个 bash shell 是一个极端(但常常很有用)的例子。更常见的情况是,您可能只想调用一个有是或否提示的脚本。在开发和 repl 使用期间,这也是一个方便的默认选择,当您遇到未预料到的用户输入提示时,现在可以直接在 repl 中回答。

在 clojure.java.process 命名空间中添加支持这种功能是否值得?

相关

当然,我可以轻易地使用自己的辅助函数来做到这一点,或者直接使用 babashka.process。但我主张,默认情况下方便地支持这种用法可能会带来很大的价值。

相反的观点是,这是可以添加到该命名空间中的许多事物之一。人们可能以无数种方式与进程一起工作,显然 clojure.java.process 不能试图最大化每一项的便利性。

这看起来像是一个非常简单的代码,你可以在用户.clj 文件中添加一个辅助函数,因此我不清楚你实际上想对 Clojure 核心本身进行什么改动?

1 个回答

0

被选中
 
最佳回答

可能在某个时候有用,但我会在这里收集关注度,看看这种模式是否足够普遍到需要添加。

...