Ich folge an article in dem der Autor das folgende Makro definiert:Was ist der Zweck der `internen` Funktion?
(defmacro make-is-integral-multiple-of (n)
(let ((function-name (intern (concatenate
'string
(symbol-name :is-integral-multiple-of-)
(write-to-string n)))))
`(defun ,function-name (x)
(equal 0 (mod x, n)))))
Das Makro ist einfach zu lesen und zu verstehen, aber ich frage mich: Wann und warum brauchen wir ausdrücklich die intern
Funktion?
Entfernen sie das Makro bricht, der dann den Fehler zurückgibt:
The value "IS-INTEGRAL-MULTIPLE-OF-3"
is not of type
(OR SYMBOL CONS).
Heißt das, dass intern
muss jedes Mal aufgerufen werden, wird das Makro soll ein neues Symbol definieren? Gibt es irgendwelche Anwendungen von intern
außerhalb einer defmacro
Aussage? Einblicke sind willkommen.