将大量嵌套的 Clojure 函数转换为线程形式

Converting a heavily nested Clojure function to the threaded form

我正在尝试在 Clojure 中转换大量嵌套的表达式。 一个例子如下:

(distinct (flatten (map keys (flatten (filter vector? (vals data))))))

螺纹形式为:

(->> data vals (filter vector?) flatten (map keys) flatten distinct)

是否可以在 Clojure 中创建一个函数或宏来帮助我自动获取以嵌套表单作为输入的线程表单?或者有没有我可以使用的第三方工具?

如果您使用的是 CIDER,我会推荐 clj-refactor. It has refactoring capability for both -> and ->>, as well as a whole bunch of other stuff