2.6 循环结构对象
要在 Lisp 对象中表示共享或循环结构,您可以使用读取器结构 '# n =' 和 '# n #'。
在对象前使用#n= 可以标记这个对象,方便后续引用;这样,您可以在另一个地方引用同一个对象。这里,n是某个整数。例如,这里创建了一个列表,其中第一个元素同时作为第三个元素重复出现:
这不同于像这样的普通语法
这将导致列表的第一个和第三个元素看起来相似,但不是同一个 Lisp 对象。下面这串代码揭示两者的区别:
您还可以使用相同的语法来创建一个循环结构,该结构看起来像个克莱因瓶。下面是一个例子:
这将生成一个列表,其第二个元素是列表本身。您可以通过以下代码看到它确实有效:
如果给变量绑定print-circle
到非nil
值,Lisp 打印 可以生成此语法来记录 Lisp 对象中的循环和共享结构。请参阅输出变量。
最后更新于
这有帮助吗?