我有以下代码及其评价为评论:
(require scheme/mpair)
(list) ;; '()
(mlist) ;; '()
(cons 'un (list)) ;; '(un)
(list 'un (list)) ;; '(un ())
(mcons 'un (mlist)) ;; (mcons 'un '())
(mlist 'un (mlist)) ;; (mcons 'un (mcons '() '()))
我的问题:
为什么第3个表达式不会返回'()
而不是'(un . ())
?
为什么第5个表达式和第6个表达式不会返回相同的东西?
答案 0 :(得分: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
到empty
的序列的缩写。