Lisp:函数打印NIL列表

Izz*_*zzy 0 lisp common-lisp

我遇到的问题是,当我创建一个打印列表某个部分的函数时,它会将其打印为NIL而不是实际的元素.

例如:

> (setf thelist '((a b) (c (d e f)) (g (h i)))
> (defun f1(list)
        (print ( car (list))))
> (f1 thelist)
   NIL
   NIL

But this works: 
> (car thelist)
   (A B)
Run Code Online (Sandbox Code Playgroud)
  1. 为什么在函数中使用列表时打印NIL但单独使用时它输出第一个元素就好了?
  2. 如何获得打印我想要的列表部分的功能?

Chr*_*ung 11

你有:

(print (car (list)))
Run Code Online (Sandbox Code Playgroud)

这是调用list函数,而不是使用list参数.(list)总是返回一个空列表.(Common Lisp是一个"Lisp-2",这意味着list在函数调用上下文中指的是与list变量访问上下文不同的东西.)

要修复,请更改要使用的代码:

(print (car list))
Run Code Online (Sandbox Code Playgroud)

代替.