gpt4 book ai didi

Clojure 在 `let` 绑定(bind)中打印值

转载 作者:行者123 更新时间:2023-12-02 11:57:32 25 4
gpt4 key购买 nike

let 绑定(bind)中打印值的惯用方法是什么?

当我开始使用 Clojure 进行开发时,我在 REPL 中编写代码,然后将其转换为简单的 let 表达式。作为初学者,我在这个(简单的)转换阶段经常犯错误。

(let [a (aFn ...)
b (bFn ... a)]
;; error above
)

所以我会把它改回类似的东西,基本上是内联的东西:

(println "a is"    (aFn ...))
(println "b is" (bFn ... (aFn ...)))
(let [a (aFn ...)
b (bFn ... a)]
;; ...
)

由于 Clojure 的优点(不变性、引用透明性......),它在大多数情况下都可以工作。

现在我做了一些事情:

(let [a (aFn ...)
_ (println "a is" a)
b (bFn ... a)
_ (println "b is" b)]
;; ...
)

这是一个改进,但仍然感觉很笨拙。执行此操作的正确方法是什么?

最佳答案

您可以定义一个返回其参数的打印函数:

(defn cl-print [x] (doto x (print)))

然后,这只是包装表达式的问题:

(let [a (cl-print (aFn ...))
b (cl-print (bFn ... a))]
...)

关于Clojure 在 `let` 绑定(bind)中打印值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32228519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com