今日は

ココサブさん担当の setter のレビュー方面取り組み予定。アウトプット出せるかどうかは微妙ですが。
しかし「一般化された set!」って知らなんだ。勉強になります。
# ってか、gauche の事 (scheme の事??) あまり理解できてないのに
# source code reading ってどうなんだ、と自分ツッコミ

Scm_Setter

こんなカンジ

static SCM_DEFINE_STRING_CONST(object_setter__NAME, "object-setter", 13, 13);

ScmObj Scm_Setter(ScmObj proc)
{
    if (SCM_PROCEDUREP(proc)) {
        /* NB: This used to signal an error if no setter procedure is associated
           to proc; now it returns #f in such case */
        return SCM_PROCEDURE(proc)->setter;
    } else {
        /* fallback to (setter object-apply) */
        return Scm_MakeSubr(object_setter, (void*)proc, 0, 1,
                            SCM_OBJ(&object_setter__NAME));
    }
}
proc が SCM_PROCEDUREP な場合
        return SCM_PROCEDURE(proc)->setter;

してます。見りゃ分かりますが。コメントには setter が無い場合 #f 戻す、ってありますが、その根拠は、というと以下??

#define SCM_PROCEDURE_INIT(obj, req, opt, typ, inf)     \
    SCM_PROCEDURE(obj)->required = req,                 \
    SCM_PROCEDURE(obj)->optional = opt,                 \
    SCM_PROCEDURE(obj)->type = typ,                     \
    SCM_PROCEDURE(obj)->info = inf,                     \
    SCM_PROCEDURE(obj)->setter = SCM_FALSE,             \
    SCM_PROCEDURE(obj)->inliner = SCM_FALSE

微妙に気になっているのは

        return  SCM_PROCEDURE_SETTER(proc);

では何故にないのか、という事。どーでも良いっちゃ良いですが。

proc が SCM_PROCEDUREP でない場合
        return Scm_MakeSubr(object_setter, (void*)proc, 0, 1,
                            SCM_OBJ(&object_setter__NAME));

してますな。これが wrap してるナニなのか。って object_setter が直上で定義されてるのを発見。最初は define されてるのか、とナチュラルなソレでした。

static ScmObj object_setter(ScmObj *args, int nargs, void *data)
{
    SCM_ASSERT(nargs == 1);
    return Scm_VMApply(SCM_OBJ(&Scm_GenericObjectSetter),
                       Scm_Cons(SCM_OBJ(data), args[0]));
}

static SCM_DEFINE_STRING_CONST(object_setter__NAME, "object-setter", 13, 13);

むむ。こっちはちょっと痺れた脳では微妙。もう少し確認する時間が必要、ってコトで今日は寝ます。疲労困憊。
週末頑張るためのログ、という事で勘弁して下さひ。(何

とほほ

凄いナチュラルな大ボケを書いてますが修正しないでおきます。(とほほ
あら?いいのかな?
もう訳ワカりません。