球拍,列表和球拍

Sof*_*mur 1 scheme racket

我有以下代码及其评论作为评论:

(require scheme/mpair)

(list)                   ;; '()
(mlist)                  ;; '()

(cons 'un (list))        ;; '(un)
(list 'un (list))        ;; '(un ())

(mcons 'un (mlist))      ;; (mcons 'un '())
(mlist 'un (mlist))      ;; (mcons 'un (mcons '() '()))
Run Code Online (Sandbox Code Playgroud)

我的问题:

  1. 为什么第3个表达式不返回'(),而不是'(un . ())

  2. 为什么不将第5个表达式和第6个表达式返回相同的东西?

nad*_*eem 6

作为一般示例,(list x y z)是缩写(cons x (cons y (cons z empty))).并且(list)是一个空列表,即empty.所以(list 'un (list))它只是一个缩写(cons 'un (cons empty empty)) - 即包含两个元素的列表:符号'un和空列表.mlist同样是用于序列的缩写mcons"ES到empty在最后.