タグ

2018年3月19日のブックマーク (1件)

  • On Lisp --- 構造化代入

    構造化代入とは,代入の一般化だ. オペレータsetqとsetfは個々の変数に代入を行う. 構造化代入は代入をアクセスと組み合わせる. 第1引数に変数を単独で置くのではなく,変数のパターンを与える. すると各々に同じ構造の対応する場所に置かれた値が代入される. リストに対する構造化代入 CLtL2では,Common Lispに新マクロdestructuring-bindが加わった. このマクロは第7章で簡単に扱ったが,ここでは詳しく検討する. lstが要素を3つ持つリストで,xに第1要素を,yに第2, zに第3要素を束縛したいとしよう. CLtL1のみに対応のCommon Lispでは,こうしなければならない. (let ((x (first lst)) (y (second lst)) (z (third lst))) ...) 新マクロを使うと,代わりにこう書くことができる. (dest

    masatoi
    masatoi 2018/03/19
    脳がdbindの定義の理解を拒否している