sda*_*das 2 functional-programming clojure
我有generate-code一个while在Clojure循环中运行的函数:
; ...
(with-local-vars [code nil]
(while true
(var-set code (generate-code @code))
(write-to-file @code)
(execute-code @code)))
Run Code Online (Sandbox Code Playgroud)
显然这不是Clojure-esque - 有没有更好的方法来做到这一点而不引入局部变量?
您可能正在寻找let:
(let [code (generate-code)]
(write-to-file code)
(execute-code code))
Run Code Online (Sandbox Code Playgroud)
你也可以
((fn [code]
(write-to-file code)
(execute-code code))
(generate-code))
Run Code Online (Sandbox Code Playgroud)
或者,如果你想要的话
(last ((juxt write-to-file execute-code) (generate-code)))
Run Code Online (Sandbox Code Playgroud)