我使用以下函数将posns列表转换为三元组列表(posn,posn,symbol)供以后使用draw-solid-line:
(define (list->triples a-list)
(cond
[(= (length a-list) 1) empty]
[else (cons (list (first a-list) (second a-list) my-color) (list->triples (rest a-list)))]
)
)
当我将它应用于(list(make-posn 10 10)(make-posn 10 20))时,我得到了
(list (list (make-posn 10 10) (make-posn 10 20) 'black))
正如所料,但当我在列表中添加更多posns时,我得到以下内容:
(shared ((-4- (make-posn 10 20))) (list (list (make-posn 10 10) -4- 'black) (list -4- (make-posn 20 20) 'black)))
我觉得很困惑。
它显然表现得像我需要的列表,因为它可以以预期的方式绘制,但我只是不知道(共享...)是什么以及为什么我的函数返回这种类型的值。
我唯一的线索是它应该与列表中posns的存在有关,因为我没有得到符号列表的相同行为。
以防这是相关的:我正在使用HTDP高级教学语言。
任何人都可以澄清为什么我会得到这种类型的输出吗?
答案 0 :(得分:1)
程序中的结果以这种方式打印,因为您在语言设置中启用了“显示值共享”设置。如果您不希望像这样打印值,可以取消选中设置。
共享打印机只是缩写多次出现的部分结果。您可以在racket/shared的文档中找到有关共享的更多信息。
注意:在将来的SO帖子中,如果您提供正在尝试运行的整个程序将会很有帮助,因此很容易重现该问题。如果您指出正在使用的语言设置,它也会有所帮助。