Clojure-评估高阶函数返回的函数

max*_*ist 3 clojure read-eval-print-loop

如果我在repl中运行一个更高阶的函数,或者返回某个函数的东西(如下所示),是否有任何方法可以稍后检索返回的函数(由repl返回的值)并进行评估?

user> #(% 5 5)
#function[user/eval13160/fn--13161]
Run Code Online (Sandbox Code Playgroud)

为了解释这个问题的原因,我在玩http-kit,并运行了function run-server。直到执行后,我才意识到该函数返回了停止服务器所需的函数,因此我一直在尝试弄清楚如何使用返回的函数。

Tay*_*ood 5

是的,您可以使用以下命令访问以前的REPL值*1

user=> #(% 5 5)
#object[user$eval3$fn__4 0x487db668 "user$eval3$fn__4@487db668"]
user=> (*1 +)
10
Run Code Online (Sandbox Code Playgroud)

还有来自先前评估的值*2*3用于追踪的值,以及*e针对先前的例外情况。

您可能还会def得到以下结果:

(def my-fn #(% 5 5))
(def my-fn *1) ;; or do it later
Run Code Online (Sandbox Code Playgroud)