LISP: Keyword parameters, supplied-p

Posted by echox on Stack Overflow See other posts from Stack Overflow or by echox
Published on 2010-04-29T09:12:16Z Indexed on 2010/04/29 9:17 UTC
Read the original article Hit count: 439

Filed under:
|

At the moment I'm working through "Practical Common Lisp" from Peter Seibel.

In the chapter "Practical: A Simple Database" (http://www.gigamonkeys.com/book/practical-a-simple-database.html) Seibel explains keyword parameters and the usage of a supplied-parameter with the following example:

(defun foo (&key a (b 20) (c 30 c-p)) (list a b c c-p))

Results:

(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)

So if I use &key at the beginning of my parameter list, I have the possibility to use a list of 3 parameters name, default value and the third if the parameter as been supplied or not. Ok. But looking at the code in the above example:

(list a b c c-p)

How does the lisp interpreter know that c-p is my "supplied parameter"?

© Stack Overflow or respective owner

Related posts about common-lisp

Related posts about lisp