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 是一个极端(但常常有用)的例子。更常见的情况是,您可能只想调用一个带有 yes 或 no 提示的脚本。在开发和 repl 使用过程中,这也是一个方便的默认设置,在遇到未预料到的用户输入提示时,您现在可以直接在 repl 中回答。

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

相关

当然,我可以很容易地使用自己的辅助函数来实现这一点,或者只是使用 babashka.process。但我认为,如果直接在开箱即用的方式提供这种便利性,可能会收获更多。

相反意见是,这是可以为该命名空间添加的众多功能之一。人们可能会以成百上千种方式与进程进行交互,显然 clojure.java.process 不应该试图为它们中的每一个最大程度提高便利性。

这看起来很简单——你可以在你的 user.clj 文件中添加辅助函数——所以我不太清楚你真正想要对 Clojure 核心本身进行什么改变?

1 个回答

0

选中
 
最佳答案

可能在某个时候有用,但我在此收集兴趣,看看这个模式是否足够普遍,值得添加。

...