我很想知道爲什麼set
似乎是唯一的原因。例如:爲什麼SET不推薦使用?
(set 'nm 3) ;; set evaluates its first argument, a symbol, has to be quoted
nm ;; ==> evaluates to 3
(set 'nm 'nn) ;; assigns nn to the value cell of nm
nm ;; ==> evaluates to nn
nn ;; ==> ERROR. no value
(set nm 3) ;; since nm evaluates to nn ...
nm ;; evaluates to nn
nn ;; evaluates to 3
實現類似的行爲,我只能夠使用setf
:
(setq tu 'ty) ;;
(symbol-value 'tu) ;; returns ty
(setq (symbol-value 'tu) 5) ;; ERROR. setq expects a symbol
(setf (symbol-value tu) 5) ;; has to be unquoted to access the value cell
tu ;; ==> evaluates to ty
ty ;; ==> evaluates to 3
在其他編程語言爲降級的理由(一個或多個)是相當清楚的:效率低下,錯誤容易或不安全的想到。我想知道當時set
的折舊標準是什麼。我能從網上收集到的是this,這是可笑的。謝謝。
是否有任何資源指定這種事情的細節?必須有文件的地方... – macrolyte