##まぁ、ぼくがかってにパズル的な問題にしたいだけなんですけど:D
#なんかできそうでできないので。
#やってみた。
#(define (procA another-fun)
(let loop ((n 5))
(display "In Proc A \n")
(set! another-fun (call/cc another-fun))
(when (> n 0)
(loop (- n 1)))))
(define (procB another-fun)
(let loop ((n 5))
(display "In Proc B \n")
(set! another-fun (call/cc another-fun))
(when (> n 0)
(loop (- n 1)))))
(define (procC another-fun)
(let loop ((n 5))
(display "In Proc C \n")
(set! another-fun (call/cc another-fun))
(when (> n 0)
(loop (- n 1)))))
(use util.queue)
(define (make-dispatcher . cs)
(let1 q (list->queue cs)
(define (dispatcher c)
(let1 next (dequeue! q)
(enqueue! q c)
(next dispatcher)))
(dispatcher dispatcher)))
(make-dispatcher procA procB procC)
#でもqueueで副作用してるのがいまいちかなあ。毎回新しいクロージャを作って返すようにしたら副作用無しで書けそうな気がする。
#最近、結構いろんな話題が進んでますね。
#c-wrapperのSnowLeopard対応はもうちょっと待って(泣)
#objc-wrapperの取り扱いを思案中。
#Gauche全体のことを考えると、(び)さんが Gauche-dbd-sqlite3 をリリースした直後にリリースするのが良いかも。
#glintもいろいろいじりたいけど、作りたいものキューがたまっていてなかなか順位が回ってこない。現状はIFormを見ているので、コメント情報は取得できないです。ただ、コメントにアノテーションを書くのってなんだか負けた気がする。
#アノテーションやるなら(declare ...) みたいにちゃんとソース中に書けるようにするのがいいなあ。
#そうなんですよね。アノテーション用の別言語を導入するのは嫌だし、S式にするならそもそもソースコードに書いてしまえば良いので。
#ただ、コメントから空気を読み取って挙動を変えるのは面白いかも。例えば「コメントがなんだかたくさん書いてある」→「詳しく説明する必要があるコードなら結構複雑かも」→「チェックを細かくする」とか。