关于list和list*的相关链接 http://clhs.lisp.se/Body/f_list_.htm
我寻思你给出来的链接不是写了很多例子吗……
list*
等效于 (cons a (cons b (cons c (cons d (cons ..... (cons y z))))))
请问和list什么区别呢
(list 1 2 3) => (1 2 3)
(list* 1 2 3) => (1 2 . 3)
list* 不会加 nil
nil指的是.么?阐述的是形式上的区别么,功能上的区别是什么呢
老哥学过 lisp 吗?
正在学习中呢
请问文档中 list* is like list except that the last argument to list becomes the car of the last cons constructed, while the last argument to list* becomes the cdr of the last cons constructed. Hence, any given call to list* always produces one fewer conses than a call to list with the same number of arguments.
具体含义是什么呢
直接写两个实现出来应该更好理解:
(defun yy-list (&rest arg)
(if (null arg) nil
(cons (car arg)
(apply 'yy-list (cdr arg)))))
(defun yy-list* (&rest arg)
(if (null arg) (error "empty arglist")
(if (= 1 (length arg)) (car arg)
(cons (car arg) (apply 'yy-list* (cdr arg))))))
建议先去读 ANSI Common Lisp 捏,别从 CLHS 开始
感谢给出的代码描述,请问语义上的区别是什么呢?什么情况下只能用list*呢?
感谢上面两位小伙伴的回复,下面一个例子可挺直观说明区别
CL-USER> (list* 'a 'b 'c '(d e f))
(A B C D E F)
CL-USER> (list 'a 'b 'c '(d e f))
(A B C (D E F))
…
想用什么用什么,我基本上没用过这函数