Clojure - оценка возвращаемой функции из функции более высокого порядка - PullRequest
3 голосов
/ 10 апреля 2019

Если я запускаю функцию более высокого порядка в repl или что-то, что возвращает функцию, как показано ниже, есть ли способ позже извлечь возвращенную функцию (значение, возвращаемое repl) и оценить ее?

user> #(% 5 5)
#function[user/eval13160/fn--13161]

Чтобы объяснить причину вопроса, я играю с http-kit и запустил функцию run-server.Только после выполнения я понял, что функция возвращает функцию, которая необходима для остановки сервера, и поэтому я пытался понять, как использовать возвращенную функцию.

1 Ответ

5 голосов
/ 10 апреля 2019

Да, вы можете получить доступ к предыдущим значениям REPL с помощью *1:

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

Также есть *2 и *3 для конечных значений из предыдущих оценок и *e для предыдущих исключений.

Вы также можете def результат:

(def my-fn #(% 5 5))
(def my-fn *1) ;; or do it later
...