Ou autrement dit: Est-il possible pour une variable CL ne pas être (en partie) un symbolele X dans (LET ((x ...) un symbole entièrement étoffées
je pense? Je peux avoir une idée fausse profonde sur les variables dans CL.
J'ai toujours pensé CL n'a pas de variables, seuls les symboles et symboles ont (entre autres propriétés) un nom et une cellule de valeur (qui est la variable).
et quand quelqu'un a dit "variable x
a la valeur 42" Je pensais que c'était court pour "la cellule de valeur du symbole nommé x
sto res la valeur 42 ".
Mais c'est probablement faux.
Lorsque je tape
> (let ((a 42))
(type-of 'a))
SYMBOL
; caught STYLE-WARNING:
; The variable A is defined but never used.
est la variable lexicale a
dans cet exemple un symbole entièrement étoffées dont la cellule valeur a été fixée à 42? Parce que l'avertissement The variable A is defined but never used
suggère le contraire et il semble que la variable lexicale ne soit pas la même chose que le symbole a
sous la forme (type-of 'a)
suivante
Cela signifie-t-il que les variables lexicales créées par 'defun',' lambda', 'let', etc. semblent être des symboles mais, une fois compilées, ne le sont pas? – Frank
Ce ne sont que des symboles dans le code source, tout comme les appels de fonction sont des listes dans le code source. Quand ils sont compilés, tout se transforme en code machine, et les variables lexicales ne sont que des emplacements de pile. – Barmar