ScmObj * as lvalue 続き
思ったより早く解放されたのでまったり。
どうでもいいところから返信。
はてな効果?で肝心な場所の&が抜けてましたが
う、それは…(こそこそごにょごにょ)何の話ですか? (笑顔
;; まさか今こっそり直したなんて事は断じて無い。
typedef ScmObj *ScmRef; #define SCM_REF_CAR(obj) (&SCM_CAR(obj)) #define SCM_REF_CDR(obj) (&SCM_CDR(obj)) #define SCM_DEREF(ref) (*(ref)) #define SCM_SET(ref, obj) (*(ref) = (obj))
不本意ですが、SigScheme 外部に export する可能性を考えるとそうするしかありませんね。でも、REF_CAR()/REF_CDR() は嫌。MAKE_REF() 一つを提供して MAKE_REF (CAR (obj)) のように使うことで、「どの slot(*1) も同じ slot(*2) だ」という抽象的な統合が明らかにできます。あと primitive から組み立ててる感じが滲み出て悦(顔。注釈: (*1) は特定の ScmObjInternal instance のどっちか 1 word、(*2) は slot という genus の意味。つまり、「どこの人でも同じ人間だ」というのと同じ構文。
参照がほしい参照がほしい。C++ の参照が欲しい。
しかしなにもおこらなかった。