使用`list`或`append`实现cons

Rog*_*ash 3 lisp common-lisp

有没有通过任何方式cons可以在Common Lisp的使用来实现list,append,first,rest等?

在以下代码中

(defun my_list (&rest arguments)
   `(,@arguments) ; Line 1
)
Run Code Online (Sandbox Code Playgroud)

完整的第1行是什么意思?

Sva*_*nte 6

第一个问题:不,因为cons它是构建块,listappend不是相反.这就像试图用房屋建造砖块.

第二个问题:反引用语法在CLHS中解释(http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/sec_2-4-6.html).

文体评论:

  • 拼写为"Common Lisp".

  • 不要使用下划线来分隔名称的部分,而是使用连字符: my-list.

  • 不要让括号晃来晃去.您的代码段应格式如下:

    (defun my-list (&rest arguments)
      `(,@arguments)) ; Line 1
    
    Run Code Online (Sandbox Code Playgroud)
  • 在宏之外使用反引用语法通常不是一个好主意.在这种情况下,它是完全多余的:

    (defun my-list (&rest arguments)
      arguments)
    
    Run Code Online (Sandbox Code Playgroud)