當我在Scheme中創建一個列表時,最後一對的cdr指向什麼?這是一個'空單詞'還是'空單'? DrScheme不介意(cons 'a empty)
和(cons 'a '())
。最後,空白詞和空白列表有什麼區別?列表中最後一個元素指向Scheme的是什麼?
1
A
回答
4
DrScheme不介意你cons
-ing,因爲cons
可以做的不僅僅是建立名單。從參考,
(cons a d) → pair? a : any/c d : any/c
這意味着cons
建立配對。這也是完全合法的做
> (cons 1 2)
(1 . 2)
這不是一個名單,但仍然可以讓你做
> (car (cons 1 2))
1
> (cdr (cons 1 2))
2
但不管怎麼說,「空字」和「空列表」是同一個對象,可以通過檢查
> (eq? empty '())
#t
1
最後一對的cdr指向'(),空列表。
1
如果您評估符號empty
,可以找到您所有問題的答案。它被定義爲等於'()
,空列表,這是最後一個cdr指向的內容。要說服自己,試試這個:
(cdr (list 1 2 3))
(cdr (cdr (list 1 2 3)))
(cdr (cdr (cdr (list 1 2 3))))
相關問題
- 1. 如何從Scheme的列表中刪除第二個到最後一個元素?
- 2. 什麼是給數據庫表的最後一個元素/項
- 3. 命名向量列表的最後一個元素中的R
- 4. C++中指針列表的最後一個元素
- 5. 什麼是向量中第二個到最後一個元素的代碼
- 6. 檢查元素是否是列表中的最後一個
- 7. 指向opencv/C++中Mat中的最後一個元素
- 8. 「指向最後一個元素的指針」更漂亮,std :: vector?
- 9. 指向數組的指針,爲什麼這是最後一個元素的地址?
- 10. 在Scheme/Racket的每個列表中添加一個元素(在列表中)?
- 11. 列表中的Python片第一個和最後一個元素
- 12. Python列表重複整個列表的最後一個元素
- 13. 根據指向第一個和最後一個元素的指針計算數組中的元素數
- 14. 爲什麼OCaml中的list不保持指向最後一個元素的指針?
- 15. 檢查元素是否是選中的最後一個元素
- 16. 使用Scheme查找列表中的最小元素
- 17. ArrayList中的每個元素都是最後一個元素?
- 18. 爲什麼scrollspy(bootstrap)總是跳轉到最後一個元素
- 19. 爲什麼總是隻追加到最後一個元素?
- 20. 反轉鏈接列表,爲什麼head不指向原始第一個元素?
- 21. 列表的最後一個元素轉移到列表
- 22. 拆除列表元素時指數是一個列表是NaN
- 23. python訪問列表中的第二個元素到最後一個元素
- 24. Scheme - 將列表中的每個元素轉換爲列表(列表列表)
- 25. 爲什麼Array.splice(-1,1)刪除Javascript中的最後一個元素?
- 26. 從angularjs中刪除列表中的最後一個元素
- 27. 將列表中的最後一個元素保留在val中
- 28. 判斷一個元素是否在列表中的另一個元素之後
- 29. 爲什麼Web元素只在一個列表中的一個元素?
- 30. 獲取一個/列表/數組的最後一個元素
爲什麼(缺點是空的)工作? – unj2 2009-06-04 16:37:04
所有列表均由一系列列表組成,每個列表的長度均爲2.例如,(1 2 3)實際上是長度爲2的列表:第一個項目爲1,第二個項目爲(2 3)。內部列表也是長度爲2的列表:第一個項目是2,第二個項目是(3)。第二個項目實際上也是兩個項目列表:第一個項目是3,第二個項目是()。因此,cons('a'())返回('a),因爲那實際上是('a。'())。 – 2009-06-04 16:45:26