Scheme #= as output 是什么意思?
Scheme what does #= as output mean?
你好,我正在尝试学习 Scheme,我正在研究大学网站上的一个例子:
https://courses.cs.washington.edu/courses/cse341/05au/lectures/scheme-side-effects.html
示例大致如下:
(define circ '(a b))
(set-cdr! (cdr circ) circ)
这是输出:
=> #0=(a b . #0#)
我不明白这是什么意思。该代码将一个名为 circ 的变量定义为具有 2 个元素 (a b) 的列表。
设置CDR!改变此列表的 cdr [即 (b '())] 并将其更改为 circ(即 (a b)).
所以我在这里预期的输出是 (a (a b)) 但我得到了这个奇怪的标签。
我正在使用 DrRacket IDE,并将 R5RS 方案设置为语言。
这个话题标签是什么意思?它是否可能创建一个指向自身的指针(一个 [指向 circ 的指针]),在这种情况下它会像某种无限循环或其他东西?
我的意思是如果我这样做:
(define x '(a b))
(set-cdr! x 'c)
x
=>(a.c);是输出
这个简单理解为set-cdr!最后用 'c and getting rid of the '() 替换 (b '()) 就是为什么我得到一个点对而不是列表的原因。但这与前面的示例不一致。
无论如何,如果有人愿意告诉我,请告诉我。提前致谢。
你认为操作是创建循环列表是正确的。
通过cons cells绘制一个list,define后是这样的:
这是set-cdr!
之后的情况:
注意修改是在circ
的cdr的cdr上(所以在第二个cell的cdr上)。 lisp 语言中的符号 #0=(a b . #0#)
描述了一个不正确的列表,其中最后一个 cdr 等于列表本身,产生循环数据结构(即具有“循环”的数据结构)。
你好,我正在尝试学习 Scheme,我正在研究大学网站上的一个例子:
https://courses.cs.washington.edu/courses/cse341/05au/lectures/scheme-side-effects.html
示例大致如下:
(define circ '(a b))
(set-cdr! (cdr circ) circ)
这是输出:
=> #0=(a b . #0#)
我不明白这是什么意思。该代码将一个名为 circ 的变量定义为具有 2 个元素 (a b) 的列表。
设置CDR!改变此列表的 cdr [即 (b '())] 并将其更改为 circ(即 (a b)).
所以我在这里预期的输出是 (a (a b)) 但我得到了这个奇怪的标签。
我正在使用 DrRacket IDE,并将 R5RS 方案设置为语言。
这个话题标签是什么意思?它是否可能创建一个指向自身的指针(一个 [指向 circ 的指针]),在这种情况下它会像某种无限循环或其他东西?
我的意思是如果我这样做:
(define x '(a b))
(set-cdr! x 'c)
x
=>(a.c);是输出
这个简单理解为set-cdr!最后用 'c and getting rid of the '() 替换 (b '()) 就是为什么我得到一个点对而不是列表的原因。但这与前面的示例不一致。
无论如何,如果有人愿意告诉我,请告诉我。提前致谢。
你认为操作是创建循环列表是正确的。
通过cons cells绘制一个list,define后是这样的:
这是set-cdr!
之后的情况:
注意修改是在circ
的cdr的cdr上(所以在第二个cell的cdr上)。 lisp 语言中的符号 #0=(a b . #0#)
描述了一个不正确的列表,其中最后一个 cdr 等于列表本身,产生循环数据结构(即具有“循环”的数据结构)。