Common Lisp has an unless macro, but it lacks an else clause, implicitly taking the value "nil" if the test expression is true. It's probably most useful for aborting the flow of the code, e.g.: (unless foo (error "Foo should not be nil")) In less functional code, you sometimes see it for default values (though "OR" seems to be more idiomatic for that case): (unless foo (setf foo 3)) Regardless it has few of the down…
(or foo (error "Foo should not be nil"))
plus it propagates the value of foo in the non-error case.