我很想知道为什么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