Posted 2020-12-13 17:11:41 GMT
allocate-instance Advent Calendar 2020 14日目の記事です。
折り返しを過ぎましたが、完全にネタ切れなのでallocate-instance
でウェブを検索したりしていますが、allocate-instance
関係で以前から不思議に思っていたことを思い出したので調べてみました。
そもそも、CLtL2(Common Lisp the Language 2nd Ed.)は、ANSI Common Lisp規格成立までの中間報告書なので、ANSI CL規格からみて不備があってもしょうがないのですが、CLtL2中にはallocate-instance
の名前だけは出現するものの、項目を立てて定義が解説されてはいません。
この辺りが謎だったのですが、どうも単純に考慮漏れだったようで、CLtL2の出版時まで、処理系内部の関数なのか外部APIなのかで揺れていたようです。
オブジェクトをアロケートする手続きはどんな処理系でも備えているのは確かなのですが、外部API仕様として確立する必要が出たのは、make-load-form
でユーザー定義の手続きの中にallocate-instance
を含まざるを得ないことが判明したからだったようです。
また、ANSI規格のallocate-instance
にstructure-class
の定義があるのが謎だったのですが、これもmake-load-form
の為だと考えれば納得です。
いつもながらANSI CLは細かいところまで良く考えられていると感心します。 また、CLtL2はANSI CL規格の補助資料として参照するに留めるのが吉だと改めて思いました(が人気の根強いことよ)
■
HTML generated by 3bmd in LispWorks 7.0.0