diff options
Diffstat (limited to 'src/combinator.lisp')
-rw-r--r-- | src/combinator.lisp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/combinator.lisp b/src/combinator.lisp index 772ac6c..26a6767 100644 --- a/src/combinator.lisp +++ b/src/combinator.lisp @@ -286,14 +286,13 @@ in order." (apply #'propattrs prop args) (propappattrs on-change)) :apply (lambda (&rest args) - (if (eql :no-change (apply #'propapply prop args)) - :no-change - (propappapply on-change))) + (aprog1 (apply #'propapply prop args) + (unless (eql it :no-change) + (propappapply on-change)))) :unapply (lambda (&rest args) - (let ((result (apply #'propunapply prop args))) - (cond ((eql :no-change result) :no-change) - (unapply (propappapply on-change)) - (t result)))) + (aprog1 (apply #'propunapply prop args) + (when (and unapply (not (eql it :no-change))) + (propappapply on-change)))) :args (cdr propapp)))) (defmacro as (user &body properties) |