aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/combinator.lisp13
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)