专注于关键词的通用函数

Bag*_*ers 3 generics common-lisp

Common Lisp中是否有一种方法可以创建一个泛型函数,其中专门的参数是关键字参数?

例如,而不是这样:

CL-USER> (defgeneric tst (a))
#<STANDARD-GENERIC-FUNCTION TST (0)>
CL-USER> (defmethod tst ((a list)) 
           (print a))
#<STANDARD-METHOD TST (LIST) {1004ECC903}>
Run Code Online (Sandbox Code Playgroud)

..which在参数'a'上指定.我想要以下内容:

CL-USER> (defgeneric tst (&key a))
#<STANDARD-GENERIC-FUNCTION TST (0)>
CL-USER> (defmethod tst (&key (a list)) 
           (print a))
#<STANDARD-METHOD TST (LIST) {1004ECC903}>
Run Code Online (Sandbox Code Playgroud)

显然,这与设置关键字参数的默认值的语法冲突,所以我有点卡住了.在实际的代码中,这个问题与我选择了不同的参数布局有关,所以这不是问题(并且引导起来有点整洁!)但是如果我再遇到这个问题,我想我最好问专家!

干杯全都

Rai*_*wig 6

不,Common Lisp不提供.