Posted 2020-12-24 15:00:00 GMT
allocate-instance Advent Calendar 2020 25日目の記事です。
アドベントカレンダーも参加者が少ないと最後に総括エントリーという必殺技を使ってエントリーを埋めることができます。
オブジェクトのアロケーションなら原理は簡単なので、ニッチすぎるアドベントカレンダーでも参加者もそこそこいたりするかなと思いましたが、結局一人で完走ということになりました。
なんとなくですが、最後まで何故allocate-instance
に着目したのかが判らない、という感じだったかもしれません。
私としては、アドベントカレンダー開幕で書いたとおり、スロットストレージにベクタ以外が使うというアイデアがあまり活用されていないところに着目したわけですが、活用されないだけあったアイデアであることを証明してしまったのかもしれません。
また、Common Lispではアロケートより後のプロトコルでできることが強力で、オブジェクトのIDとクラス情報だけあれば後はどうとでもできるのがallocate-instance
をいじる意義を低下させている気がします。
実際の活用例でいうと、オブジェクトの永続化あたりでallocate-instance
の話も少し出てきたりもしますが、allocate-instance
は基本的にオブジェクトIDの割り付け程度かなと思います。
振り返ってみると、allocate-instance
のinitargsを活用する例を追求しなかったのが若干悔まれます。
といっても、allocate-instance
にストレージの種類を伝える程度な気はしますが。
あとはハッシュテーブルのストレージがベクタであることを利用して、先頭をオブジェクトのストレージにして、残りをハッシュテーブルにするというのを考えましたが、別に一本にする必要もないかなというところです。
他にも、どうしようもないアイデアはありますが、そのうち試してブログに書いてみたいと思います。
さて、次にアドベントカレンダーを企画した際にはさらにニッチなところを攻めたいと思います。
次回までごきげんよう!
■
HTML generated by 3bmd in LispWorks 7.0.0