2010プログラマ未満2010年10月25日月曜日McCLIMで接続するディスプレイを選択するMcCLIMはX11プロトコルをしゃべるためにCLXを利用しています。ディスプレイ番号などを指定するのは最終的にはCLXの役割です。McCLIMからCLXのopen-displayがどのように呼ばれるかを眺めることで、接続するディスプレイを選択する方法がわかったような気分になりました。cdr部に属性リストがセットされる。clx-portオブジェクトはfind-port関数の中で作られる。*default-server-path*が渡されるので、この値を設定すると好きなディスプレイに接続できそう。この関数をserver-pathを引数として呼び出した返り値がclx-portにセットされる。server-pathとして利用する。設定されている関数を変更することでも接続するディスプレイを選ぶことが出来ると思われる。LispのオブジェクトシステムであるCLOSには、実行時にオブジェクトのクラスを変更する機能や、クラスを再定義するとそのクラスのオブジェクトが新しいクラスのオブジェクトへ変更されるという機能があるそうです。Lispの仕様上最長の関数名です。38文字が最長であるようです。クラスclass-aのオブジェクトを作る。オブジェクトのクラスをclass-aに変更する。キーワードパラメータ:bに値を渡す。change-classが呼ばれたときに裏で呼ばれる。objのクラスをclass-bに変更する。class-aでのスロットbの値が、class-bでのスロットcにセットされた。class-cを再定義する。新しいクラスのオブジェクトへ変換される。古いクラスのスロットの値が使われるようだ。再定義後のクラスへ変換する際に動作するメソッドを定義する。bindingなので、定義した関数の名前は字面上現れる位置でないと利用できません。(fuga))3変数ならばdeclareでspecial変数だと宣言すれば良いけれど、関数の場合どうすれば良いか分からなかったのでマクロを書いてみました。警告が出るかもしれない。