Lisp:函数打印NIL列表

时间:2016-03-29 03:01:00

标签: 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)
  1. 为什么在函数中使用该列表时会打印NIL但单独使用时它会输出第一个元素就好了?
  2. 如何获取打印我想要的列表部分的功能?

1 个答案:

答案 0 :(得分:11)

你有:

(print (car (list)))

这是使用您的list参数调用the list function(list)始终返回一个空列表。 (Common Lisp是一个“Lisp-2”,这意味着函数调用上下文中的list在变量访问上下文中引用与list不同的东西。)

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

(print (car list))

代替。