"Attila Lendvai" <attila.lendvai@gmail.com> writes:
i'd be happy to push this, but imho the extra argument is unnecessary. i understand that it is a tiny bit more flexible in rare situations like:
(unwind-protect-case (aborted-p) (random 42) (:always (when aborted-p ...)))
but those are mostly covered by the three :always, :normal, :abort cases.
It's not for this because you can write this one as (unwind-protect-case () (...) (:always (do-something)) (:abort (handle-abort)) (:always (do-something-else))) It's for the case where you want to _delegate_ the work to a function: (unwind-protect-case (aborted-p) (...) (:always (perform-cleanup aborted-p ...))) Where PERFORM-CLEANUP does different things depending on the ABORTED-P flag. The reason for this is for the case where you want to use UNWIND-PROTECT-CASE in a macroexpansion, and don't want to blow up the macroexpansion with too much code.
and it introduces an extra argument for unwind-protect-case which makes it look less like unwind-protect.
I actually consider it to be a feature because it's easier to distinguish these two syntactically. -T.