Я смущен тем, как работает defun macro, потому что
(defun x () "hello")
создаст функцию x, но символ x все равно будет несвязан.
Если я привяжу некоторую лямбду к x, то x будет иметь значение, но она не будет обрабатываться интерпретатором как функция в форме, подобной этому:
(x)
Я думаю, что это связано с тем, что defun должен определять функцию в глобальной среде, но я не уверен, что именно это означает. Почему я не могу затенять его в текущей среде?
Есть ли способ заставить интерпретатора обрабатывать символ как функцию, если к нему привязана какая-то лямбда? Например:
(setq y (lambda () "I want to be a named function"))
(y)
P.S.: Я использую SBCL.