But I don't think I've ever made that slip. Function complementation isn't the same as Boolean-not, so overloading the visually distinctive ~foo based on context rubs me the wrong way. I'd probably get used to it, though.
Another thought occurs. It could produce some weird bugs. E.g., you might mistakenly pass a variable to a keep that complements, which will work, but keeps t or nil instead of using a function.
arc> (= foo "bar")
arc> (keep ~ssyntax '(a.b a:b nil a b c))
(nil a b c)
arc> (keep ~foo '(a.b a:b nil a b c))
arc> (keep ~nil '(a.b a:b nil a b c))
It doesn't seem so bad, but when you have it buried in some definition like