Gauche > Archives > 2013/04/18

2013/04/18 08:10:15 UTCyamasushi
#
(use gauche.mop.singleton)

(define-class <gauche-source> (<singleton-mixin>)
  [] )
(define gauche-source (rlet1 r (instance-of <gauche-source> )
                        #?=r
                        ) )
(define-method initialize ((self <gauche-source>) initargs)
  #?= "initialize ((self <gauche-source>)"
  (next-method)
)
#
>gosh t.scm    
#?=r
#?-    #<<gauche-source> 0x9277c98>
>Exit code: 0
#
singletonではinitializeが呼ばれないのですね。この場合、初期化はinstance-ofのあたりで行うというのが筋なのでしょうか?
#
上記コードでのrlet1でrを初期化する・・・・ような。
2013/04/18 08:15:56 UTCshiro
#
あれ、なんでだろ。(make <singleton-meta> . initargs) からnext-method呼んでるので、通常の初期化プロトコルを通るはずだけど…
#
今やってみたけどinitialize呼ばれますよ。もしかして上に貼り付けたコードそのままの順序で実行しました? そしたらinitializeが定義される前にinstance-ofでインスタンスが生成されちゃってるので呼ばれないですよ。
#
あ、dict-update!のバグはfixしました。まはろ。
2013/04/18 08:23:48 UTCyamasushi
#
あああああ、そういうことだったのですか。定義順に問題があったわけですね!
#
いまやってみたら動きました
2013/04/18 17:32:38 UTCshiro
#
R7RSのratification voteが始まるよー http://lists.scheme-reports.org/pipermail/scheme-reports/2013-April/003299.html
2013/04/18 23:35:25 UTCyamasushi
#
なにかにapplicableなオブジェクトを列挙しようとしているのですが、これを判定するにはどうしたらいいのでしょうか? applicable?は固定の数のような感じですし。とにかく、なにかにapplicableかどうかを判定するような。
#
procedureかどうかの判定を一般化したようなものです。