var1 var2 っていう変数があって、 hoge? っていう述語があって、二つの変数のうち hoge? であるほうを hoge 、そうじゃない方を other にバインドしたい時って、ありますよね?

 (if (or (hoge? var1) (hoge? var2))
     (let ((hoge (if (hoge? var1) var1 var2))
           (other (unless (hoge? var1) var1 var2)))
       なんか処理))

みたいに書くと、すごくダサいんですけど……hoge? と varX がいっぱい書いてあるところが。どうやったらもっと簡潔にかけるんでしょうか?

森博嗣が良く言っているように、そうならないようにするのが正解とかじゃないですよね?