uiop:if-let
(uiop:if-let ((var form)...) then [else])
let と同じように変数を並列に束縛し、すべての変数が
非 nil になったときは then を、そうでなければ else を評価します。束縛はどちらの
分岐でも有効なので、else からも変数を参照できます。
入れ子でない単一の束縛 — (uiop:if-let (x form) ...) — も受け付けます。UIOP 自身が
1 変数の場合をこう書いており、束縛リストの先頭要素がシンボルならそのリスト自体が
1 つの束縛だと解釈されます。
uiop は ASDF の移植性レイヤであり Common Lisp の一部ではありません: この名前は
uiop: 修飾付きでのみ参照できます。これは UIOP が持つ alexandria の同名マクロの
コピーで、両者の挙動は同じです。
バックエンドサポート
4 つすべてのバックエンドで動作します: インタプリタと 2 つのコンパイラが共有する
組み込みマクロ展開です。他の組み込みマクロと同様に関数値は持ちません
(#'uiop:if-let はエラーです)。