我使用以下函数将 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 高级教学语言。
谁能澄清我为什么得到这种类型的输出?