-(let ((*macroexpand-hook* (lambda (fun form env)
- (handler-bind ((error (lambda (c)
- (when (eq 'destructuring-bind (car form))
- (throw 'd-b-error c)))))
- (funcall fun form env)))))
- (macrolet ((error-p (ll)
+(let ((*macroexpand-hook*
+ (compile nil
+ (lambda (fun form env)
+ (handler-bind ((error (lambda (c)
+ (when (eq 'destructuring-bind (car form))
+ (throw 'd-b-error c)))))
+ (funcall fun form env))))))
+ (macrolet ((maybe-funcall (&rest args)
+ ;; The evaluator will delay lambda-list checks until
+ ;; the lambda is actually called.
+ (if (eq sb-ext:*evaluator-mode* :interpret)
+ `(funcall ,@args)
+ `(progn ,@args)))
+ (error-p (ll)