使用Common LISP列表

时间:2011-03-09 07:23:14

标签: lisp common-lisp

我刚刚开始使用LISP,因为刚刚打开这本书,我只有两页。我试图了解什么是什么,什么是不可接受的fn调用。每次我尝试执行

(1 2 3 4)

我收到非法的fn调用错误

同样如此
(cdr (1 2 3 4))
(first (1 2 3 4))
(a b c d)

CL程序无法返回列表吗?我将如何使用这些功能或打印列表?如果重要的话,我正在使用SLIME实现。 LISP与我以前合作的任何东西都非常不同,我想确保我从概念上得到它。

2 个答案:

答案 0 :(得分:5)

如果您将列表用作常量,则需要引用列表。否则,系统将尝试在参数1上调用函数2 3 4,这将不起作用(请注意,函数调用与列表具有相同的语法)。你的例子应该是:

'(1 2 3 4)
(cdr '(1 2 3 4))
(first '(1 2 3 4))
'(a b c d)

答案 1 :(得分:-1)

Hooo boy。

通过Seibel查找Practical Common Lisp。他是一个很好的人,他把它放在网上免费阅读。它非常有用。

Lisp的部分定义是这条规则:

  • 当看到列表时:使用列表的第一个元素,将其应用于列表的其余部分。

但是等一下:那你如何实际进入名单呢?有两个功能可以执行此操作:QUOTELIST

例如,让我们在standard out上的屏幕上打印一个列表:

(format *standard-output* "~a" '(1 2 3 4))

对于format*standard-output*别名为t(好吧,至少在SBCL中!),所以我们通常会看到(format t ...