【发布时间】:2011-02-13 17:29:57
【问题描述】:
目前我正在研究 Peter Seibel 的“Practical Common Lisp”。
在“实用:一个简单的数据库”一章 (http://www.gigamonkeys.com/book/practical-a-simple-database.html) 中,Seibel 通过以下示例解释了关键字参数和提供的参数的用法:
(defun foo (&key a (b 20) (c 30 c-p)) (list a b c c-p))
结果:
(foo :a 1 :b 2 :c 3) ==> (1 2 3 T)
(foo :c 3 :b 2 :a 1) ==> (1 2 3 T)
(foo :a 1 :c 3) ==> (1 20 3 T)
(foo) ==> (NIL 20 30 NIL)
因此,如果我在参数列表的开头使用 &key,则可以使用 3 个参数名称、默认值和第三个参数(如果提供或未提供参数)的列表。好的。 但是看上面例子中的代码:
(list a b c c-p)
lisp 解释器如何知道 c-p 是我的“提供的参数”?
【问题讨论】:
标签: lisp common-lisp