[pro] why :key arguments?

Martin Simmons martin at lispworks.com
Mon Jul 4 11:05:58 UTC 2011


>>>>> On Mon, 4 Jul 2011 09:31:31 +0000 (UTC), Tamas Papp said:
> 
> Why do some CL library functions have :key arguments?
> 
> I am asking because I am working on some statistics functions, and the 
> design choice came up.  Specifically, I can write functions like
> 
> (defun quantiles (sequence quantiles &key (key #'identity))
>    ...)
> 
> but it is a bit cumbersome.  I can make my code simpler by relying on 
> calls like
> 
> (quantiles (map 'vector key vector) quantiles)

That approach doesn't work with many of the CL functions (e.g. find, delete,
substitute, remove-duplicates) because they operate on (or return) the
elements of the sequence, not the keys.  The :key argument just affects the
arguments to the :test function.

-- 
Martin Simmons
LispWorks Ltd
http://www.lispworks.com/




More information about the pro mailing list