- # 2008/11/12(Wed) : どう書く?orgのお題 (215) に
- 継続を使った疑似並列処理なコード (#7985) を投稿した。
あれはあの条件なら動くが、よくよく考えると、
リストの長さがまちまちの場合にはうまく動かない。
修正版を考えてみた。
(define loop
(lambda (cc ls)
(cond
((pair? ls)
(display (car ls))
(loop (and (procedure? cc) (call/cc cc)) (cdr ls)))
((procedure? cc) (cc #f)))))
(let ((cc (call/cc (lambda (cc) (loop cc '(1 2 3 4 5 6 7 8 9 10))))))
(if (procedure? cc) (loop cc '(A B C D E F G H I J)) cc))
(newline)
どう書く?のほうも修正できるといいのにね...
次からはもうちょっと慎重に考えてから投稿しよう。
[TOP] [ALL]

© 2005-2010 M-OZ SOFT.
Powered by Gauche Ver.0.8.10