次の関数を使用して、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-advanced 教育言語を使用しています。
このタイプの出力が得られる理由を誰かが明確にすることはできますか?