【发布时间】:2023-04-01 07:56:01
【问题描述】:
Lisp 允许您在类似
的列表中定义符号,例如 A 和 B(setf mylist '(+ 1 2 A))
然后您可以随时返回并将 A 设置为一个值,例如。 (set 'A 100)。此时您可以执行(eval mylist) 并返回 103。然后您可以反复将 A 重新分配给任何新值。
看起来 Lisp 既保存了文字“A”(符号的名称),也保存了它的赋值。这允许动态变量分配/重新分配。这有点像查找列表。允许这样做的底层数据结构或机制是什么?
编辑:具体来说,这是如何在内部完成的(或在外部因为包似乎直接参与)?寻找一个深入的技术答案,重点是它是如何在 Lisp-2 中实现的。
【问题讨论】:
-
是什么让你觉得它被实现并且一直以一种方式实现?
-
来自 Stackoverflow 常见问题解答:“您应该只根据您面临的实际问题提出实用、可回答的问题。”您的问题含糊不清,尚不清楚答案是否会对您有所帮助。最好读一本关于实现编程语言的书。
-
@Rainer 谢谢,我希望现在更清楚了。
-
不过,从阅读有关编程语言实现的书开始阅读,这是他们立即回答的基本问题。
标签: list dynamic lisp runtime symbols