diff --git a/cx-layered-function.lisp b/cx-layered-function.lisp index b852bfc4659d633ea8967c329a4fa1f00f03ffa9..9fd9ab9ac486b9c277d163e7b5d59bbaece45033 100644 --- a/cx-layered-function.lisp +++ b/cx-layered-function.lisp @@ -53,9 +53,7 @@ ,@(let ((argument-precedence-order (assoc :argument-precedence-order options))) (if argument-precedence-order (cdr argument-precedence-order) - (loop for arg in args - until (member arg lambda-list-keywords) - collect arg))) + (required-args args))) ,layer-arg) ,@(loop for option in (remove :argument-precedence-order options :key #'car) if (eq (car option) :method) @@ -85,10 +83,7 @@ (name &rest initargs &key (lambda-list () lambda-list-p) - (argument-precedence-order - (loop for arg in lambda-list - until (member arg lambda-list-keywords) - collect arg)) + (argument-precedence-order (required-args lambda-list)) &allow-other-keys) (declare (dynamic-extent initargs)) (unless lambda-list-p @@ -123,9 +118,7 @@ (in-layer (find-layer 't)) (qualifiers ()) (lambda-list (cadr lambda-expression)) - (specializers (loop for arg in lambda-list - until (member arg lambda-list-keywords) - collect (find-class 't)))) + (specializers (required-args lambda-list (constantly (find-class 't))))) (let ((layer-arg (gensym "LAYER-ARG-"))) (destructuring-bind (lambda (&rest args) &body body)