M-OZ BLOG

Scheme-users.jpTwitter

# 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]