apply / funcall function & rest args +
apply can accept multiple parameters, but the last argument must be a list, where each element is a function of the parameters
funcall can accept multiple parameters, are the function of the parameters for the length of the known parameters of the situation
(funcall function arg1 arg2 ...) == (apply function arg1 arg2 ... nil) == (apply function (list arg1 arg2 ...))
Their first argument must be a function, not a macro, and special operators.
For example and / or, on the one hand they are macro, on the other hand is calculated by using short circuiting, which met the first nil / T to get the results, which
apply / funcall does not match the evaluation process. Because apply / funcall are ordinary functions, you must first find the values of all parameters let function processing.
Used in the apply and / or an alternative is to use function EVERY and SOME, such as (apply # 'and * list *) can be written as follows: (every #' identity * list *)