Gauche > Archives > 2026/03/01

2026/03/01 13:58:52 UTCkaki
#
メタクラス、TwitterとChatGPTでちょっと聞いた噂では、SBCLは全部 validate-superclass で明示しないといけなくて、他の処理系はまた違うとかなんとか。
2026/03/01 14:03:10 UTCkaki
#
メタクラスとメタクラスの関係が満たすべき性質とか、満たしてると嬉しい性質とかみたいなことに対して直感があまり働かないんですよね。
2026/03/01 14:10:12 UTCkaki
#
ところで、ドキュメントの scheme.ilist の所、"従って、このモジュールが提供する手続きは単に変更可能ペア用バージョンの別名になっています。" とありますが、ipairを生成する多数の手続きに言及・項目がありません。
2026/03/01 14:53:26 UTCg000001
#
Common LispのMOPのデファクト(AMOP)ではvalidate-superclassで明示するのが正しくて、他の処理系はよく使われるパターンがvalidate-superclassで定義済みという感じですね。 https://web.archive.org/web/20210322074042/https://g000001.cddddr.org/3825366463 > SBCL
2026/03/01 15:01:56 UTCg000001
#
Smalltalkのメタクラスはクラスの属性というか背後のメカニズムという感じなので、共通の性質みたいなものは求めやすいかと思いますが、Common Lisp系だとクラスのクラスで別のオブジェクトシステムであってもよいという自由度なのでなんでもありという雰囲気ですね。80年代あたりは、安全なメタクラス合成などの研究はあったようですが https://dl.acm.org/doi/abs/10.1145/74878.74909
2026/03/01 15:53:51 UTCkaki
#
なるほど。
2026/03/01 16:31:25 UTCkaki
#
;; test-module が存在しないdangling autoloadを検知しています?phantomなglocがいますね。
gosh> (define-module foo (export dummy))
gosh> (use gauche.test)
gosh> (begin (test-module 'foo :allow-undefined '(dummy)) (values))
testing bindings in #<module foo> ... ERROR: symbols exported but not defined: (dummy) AND found dangling autoloads: (dummy)
gosh> (pprint (module-table (find-module 'foo)))
#<hash-table eq[1] ((dummy . #<gloc foo#dummy phantom>))>