Jestem mylić temat defun prac makro, bodlaczego defun to nie to samo co (setq <name><lambda>)?
(defun x() "hello")
stworzy funkcji X, ale symbol x nadal będzie nieograniczony.
Jeśli będę wiązać pewne lambda x to x ma wartość, ale nie będą traktowane przez tłumacza jako funkcja w postaci tak:
(x)
myślę, że to jest związane z fakt, że defun powinien definiować funkcję w środowisku globalnym, ale nie jestem pewien, co to dokładnie oznacza. Dlaczego nie mogę wyświetlać tego w bieżącym środowisku?
Czy istnieje sposób na zmusienie interpretatora do traktowania symbolu jako funkcji, jeśli jakiś lambda był z nim związany? Na przykład:
(setq y (lambda() "I want to be a named function"))
(y)
P.S .: Używam SBCL.