В чем разница между оценкой double и # 'double в Clojure/Lisp?В чем разница между процедурой и процедурой # в Lisp/Clojure?
1:2 user=> double
#<core$double__4077 [email protected]>
1:3 user=> #'double
#'clojure.core/double
В чем разница между оценкой double и # 'double в Clojure/Lisp?В чем разница между процедурой и процедурой # в Lisp/Clojure?
1:2 user=> double
#<core$double__4077 [email protected]>
1:3 user=> #'double
#'clojure.core/double
В Clojure, #'foo
является сокращением для (var foo)
, который возвращает изменяемый объектfoo
ссылается, в отличие от его стоимости. Посмотрите на него в ссылке:
Я не уверен, что если вы хотите знать значение в Lisp: В Common Lisp, #'foo
является обобщающим для (function foo)
, который используется для доступа к значению функции связанного с именем foo
, когда он не оператор.
Неправильно. (функция foo) ищет функциональное значение, true, но не обязательно из символа. Лексическая функция не имеет символов, поэтому она смотрит на функциональное значение, связанное с именем (!) Foo из лексической среды. –
Право, исправлено. Я действительно должен исправить свою склонность сказать «символ», когда я имею в виду «имя». – Svante