slot-push! (Re: [Gauche-devel-jp] 辞書とイテレータ)

Shiro Kawai shiro****@lava*****
2003年 1月 18日 (土) 21:53:32 JST


<dictionary>フレームワークの方は別にリプライします。
とりいそぎこいつだけ。

From: Kimura Fuyuki <fuyuk****@hadal*****>
Subject: [Gauche-devel-jp] 辞書とイテレータ
Date: Sat, 18 Jan 2003 20:25:55 +0900

> あと、slot-push! の説明がちょっと嘘っぽいです(except
> がexceptじゃないような)。

ここですね。

    It is equivalent
    to the following code (except @var{obj} and @var{slot} is not
    evaluated twice, of course).

    (slot-set! @var{obj} @var{slot}
               (cons @var{value} (slot-ref @var{obj} @var{slot})))

ええとこれは、

「(slot-push! OBJ SLOT VALUE) というのは上記のコードと
等価(=置き換え可能)だよ」と書いてしまうと、

  (slot-push! (hoge foo) (hage bar) value)

というコードと

  (slot-set! (hoge foo) (hage bar) 
             (cons value (slot-ref (hoge foo) (hage bar))))

が等価だということになってしまうので、ちょっと不正確かなと
思って、「OBJとVALUEの所は1度しか評価されないけどね」と
書き足したんですが、何やらわかりにくいですね。

素直に定義を示す方がわかりやすいかもしれませんね。
  
  (define (slot-push! obj slot value)
    (slot-set! obj slot (cons value (slot-ref obj slot))))

--shiro



Gauche-devel-jp メーリングリストの案内
アーカイブの一覧に戻る