1

我使用以下函数将 posn 列表转换为三元组(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)))

我觉得很困惑。

它显然表现得像我需要的列表,因为它可以以预期的方式绘制,但我只是不明白 (shared ...) 是什么以及为什么我的函数返回这种类型的值。

我唯一的线索是它应该与列表中 posns 的存在有关,因为我没有得到与符号列表相同的行为。

以防万一:我正在使用 HTDP 高级教学语言。

谁能澄清我为什么得到这种类型的输出?

4

1 回答 1

1

程序中的结果以这种方式打印,因为您在语言设置中启用了“显示共享值”设置。如果您不想像这样打印值,可以取消选中该设置。

共享打印机只是缩写多次出现的部分结果。您可以在racket/shared的文档中找到更多关于共享的信息。

注意:在以后的 SO 帖子中,如果您提供您尝试运行的整个程序,这将很有帮助,这样很容易重现问题。如果您指出您使用的语言设置也会有所帮助。

于 2013-09-26T17:20:50.827 回答