當我在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. 檢查元素是否是列表中的最後一個
- 2. 「指向最後一個元素的指針」更漂亮,std :: vector?
- 3. 指向數組的指針,爲什麼這是最後一個元素的地址?
- 4. 爲什麼OCaml中的list不保持指向最後一個元素的指針?
- 5. 爲什麼scrollspy(bootstrap)總是跳轉到最後一個元素
- 6. 列表的最後一個元素轉移到列表
- 7. 從angularjs中刪除列表中的最後一個元素
- 8. 將列表中的最後一個元素保留在val中
- 9. Scheme - 將列表中的每個元素轉換爲列表(列表列表)
- 10. 判斷一個元素是否在列表中的另一個元素之後
- 11. 列表的第一個和最後一個元素OCaml
- 12. 獲取一個/列表/數組的最後一個元素
- 13. 爲什麼Web元素只在一個列表中的一個元素?
- 14. 反向列表的最後兩個元素在序言
- 15. 序言總結的最後一個元素列表中的
- 16. ASP.NET - Foreach最後一個元素出現在整個列表中
- 17. 使用float後列表的最後一個元素:right
- 18. 檢查列表中對象數組的最後一個元素
- 19. 忽略逗號分隔列表中的最後一個元素
- 20. 調整視圖中的最後一個元素(列表視圖)
- 21. 加入列表中的最後一個元素
- 22. 匹配分隔列表中的最後一個元素?
- 23. 循環中列表的最後一個元素
- 24. 向另一個列表中的列表添加唯一元素
- 25. 什麼是隻有一個元素的列表名稱
- 26. R:訪問每個元素的最後一個子元素的列表
- 27. 在最後一個列表上創建一個元素
- 28. 如何刪除一個元素的形式列表使用C++中的指針指向這個元素
- 29. 找到第k個鏈接列表的最後一個元素
- 30. 乘以列表中的每個元素與Scheme編程
爲什麼(缺點是空的)工作? – 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