まくろちゃれんじ!setf編(番外編)

今日はネットワークをやろうと思ったものの、なんか本を読んでいたら飽きてしまったのでその後はずっとsetf関連です。
まとめた情報を書くのにはもう少し時間が必要なので、今のところはちょっとだけ情報発信。メモしてた内容をそのままコピペです。

この式ではCommon Lisp規格に無い、処理系の内部関数を参照していることのほうが多い。それは普段はsetfによって隠蔽されているが、どこかになければならないものだ。それに関してはすべて実装依存なので、コードに可搬性を持たせたいならget-setf-methodの返した関数を使うべきで、system:set-arefのような関数を直接参照してはならない。

onLisp 第12章 汎関数 より。


http://www.shido.info/lisp/macro4.html
get-setf-methodは古くて、現在はget-setf-expansionが使われるらしい。
ここのコードによると、get-setf-method及びget-setf-expansionの関係とは

;;; should be defined in siteinit.l or .xyzzy
(defmacro get-setf-expansion (&rest argvs)                  ; (14)
  `(get-setf-method ,@argvs))

というものらしい。


・カンマは逆クオートによる評価保護の効果を打ち消す。つまりカンマの付いたS式は逆クオート内であっても評価される。
・カンマ・アットはカンマと同様の効果だが、リストの外側のカッコを取り除くという効果がある。
・mapcarの引数1は適用する関数。引数2以降はその関数への引数として使われる。

(mapcar #'list '(1 2 3 4 5) '(2 4 6 8 10)) 
-> ((1 2) (2 4) (3 6) (4 8) (5 10))

今、この式を地の文に書いたら、ダブル半角カッコと判断されて、はてな記法により注釈扱いになってしまった。はてな恐ろしい子…!!