2013-09-26 67 views
1

我使用以下函數將posns列表轉換爲三元組列表(posn,posn,symbol)供以後使用抽取實線:爲什麼我的函數有時會返回(共享...)而不是(list ...)

(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)))] 
     ) 
     ) 

當我把它應用到(名單(-posn超出10 10)(化妝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高級教學語言。

任何人都可以澄清爲什麼我得到這種類型的輸出?

回答

1

程序中的結果以這種方式打印,因爲您的語言設置中啓用了「在數值中顯示共享」設置。如果您不希望打印這樣的值,則可以取消選中該設置。

共享打印機只是多次出現結果的縮寫部分。您可以在racket/shared的文檔中找到更多關於共享的信息。

注意:在未來的SO帖子中,如果您提供了您嘗試運行的整個程序,這很有幫助,因此很容易重現此問題。如果您指出您正在使用哪種語言設置,它也會有所幫助。

+0

謝謝。取消選中「顯示分享...」的竅門。 (並且我還編輯了我的帖子以包含有關語言設置的信息) –

相關問題