为什么引号字符“'”相对于'#1='的顺序在循环列表中很重要?
Why order of quote character "'" in relation to '#1=' matters in circular lists?
我正在试验循环列表并编写了一个有缺陷的图表查看器。所以当我尝试绘制 2 个不同的图形时
(graph-viewer:graph '#1=(1 2 3 #1#) "a")
(graph-viewer:graph #1='(1 2 3 #1#) "b")
我知道谁与后一个版本的图片不同,图中包含引号。
你需要考虑 reader 是如何工作的。
当它看到 #1=
, it knows to store whatever comes next and re-use it on #1#
时 - 将其视为“变量 1”的“绑定”。
当它看到 '<blah>
时,它会将其读作 (quote <blah>)
。
因此,当它看到 '#1=(1 2 3 #1#)
时,它会将其读作
(quote (1 2 3 *))
^ |
| |
+------+
(quote
在“绑定 1”的 之外)
而 #1='(1 2 3 #1#)
读作
(quote (1 2 3 *))
^ |
| |
+-------------+
(quote
在 的“绑定 1”中 。
上图中的“箭头”为参考,即*
沿箭头指向
我正在试验循环列表并编写了一个有缺陷的图表查看器。所以当我尝试绘制 2 个不同的图形时
(graph-viewer:graph '#1=(1 2 3 #1#) "a")
(graph-viewer:graph #1='(1 2 3 #1#) "b")
我知道谁与后一个版本的图片不同,图中包含引号。
你需要考虑 reader 是如何工作的。
当它看到 #1=
, it knows to store whatever comes next and re-use it on #1#
时 - 将其视为“变量 1”的“绑定”。
当它看到 '<blah>
时,它会将其读作 (quote <blah>)
。
因此,当它看到 '#1=(1 2 3 #1#)
时,它会将其读作
(quote (1 2 3 *))
^ |
| |
+------+
(quote
在“绑定 1”的 之外)
而 #1='(1 2 3 #1#)
读作
(quote (1 2 3 *))
^ |
| |
+-------------+
(quote
在 的“绑定 1”中 。
上图中的“箭头”为参考,即*
沿箭头指向