HELP SEQUENCE-COMPILER-MACROS                    John Williams, Jul 1995

This file documents the SEQUENCE-COMPILER-MACROS module, which you can
load by giving the command:

    (require :sequence-compiler-macros)

It defines compiler macros on the following sequence functions:

    remove
    remove-if
    remove-if-not
    delete
    delete-if
    delete-if-not

These compiler macros ensure that more efficient code is generated for
calls to these functions, provided that no keyword arguments, or only
the :key and/or :test keyword arguments, are included in the call.
(Otherwise the standard version of the function is used).

So, for example, after loading the SEQUENCE-COMPILER-MACROS module, the
compiler would replace the function call:

    (remove-if #'numberp my-symbol-list :key #'symbol-value)

with code something like:

    (system::simple-remove-if
        #'(lambda (#1=#:arg)
            (funcall #'numberp (funcall #'symbol-value #1#)))
         my-symbol-list)


The code produced by these compiler macros executes roughly twice as
fast as the standard functions.


--- C.all/lisp/help/sequence-compiler-macros
--- Copyright University of Sussex 1995. All rights reserved.
