O qualificador &key informa o avaliador que os parâmetros qualificados são ligados através de uma indicação explícita de quem chama a função. Essa indicação é feita designando o nome de cada parâmetro precedido por dois pontos e indicando qual o valor a que ele deve estar ligado. Os parâmetros que não forem ligados comportam-se como se fossem opcionais. Este género de parâmetros dizem-se de chave (keyword).
Desta forma, o &key permite trocar a ordem dos argumentos. O seguinte exemplo mostra o funcionamento do &key.
> ((lambda (x y &key z (w 4) k) (lista x y z w k)) 1 2 :k 5 :z 3) (1 2 3 4 5)
A grande maioria das funções pré-definidas na linguagem para manipular listas possui parâmetros opcionais e de chave. Repare-se que as chaves são tratadas de forma especial pelo avaliador. Efectivamente, se assim não fosse, quando especificávamos os argumentos de uma função com parâmetros de chave, o avaliador iria tentar determinar o valor das chaves, gerando então um erro por estas não terem valor. Na realidade, quando um símbolo qualquer é precedido por dois pontos, esse símbolo é considerado como especial, pertencendo ao conjunto dos símbolos chaves, e avaliando para si próprio.
> ola Error: Unbound variable: OLA > 'ola OLA > :ola :OLA
Os tipos aglomerados constituem uma das grandes utilizações dos parâmetros de chave. Nestes tipos de dados, os constructores limitam-se a realizar um agrupamento de valores para os diversos constituintes do tipo. Vimos o exemplo de um automóvel, que era constituido por uma marca, um modelo, um número de portas, etc. Embora não exista qualquer razão para que a marca de um automóvel seja mais importante que o seu número de portas, infelizmente a ordenação implícita dos argumentos das funções Lisp impõem que assim seja. Podemos resolver este problema usando parâmetros de chave, de forma a eliminar a ordenação dos argumentos e permitir ao utilizador especificá-los pela ordem que entender, por exemplo:
(defun novo-automovel (&key marca modelo portas) (list marca modelo portas))> (novo-automovel :portas 2 :marca 'honda :modelo 'civic) (honda civic 2)
Para além da possibilidade de alteração da ordem dos argumentos, o qualificador &key ajuda à legibilidade do programa, ao tornar explícito o papel que cada argumento tem na função.