以前コルーチンの記事Co-Routine / Pythonを書きましたが、Scheme(Lisp)でやってみました。最近、データ処理には「やはりLispが向いているかも」という気まぐれから、Schemeに再びはまっています。Schemeといえば、call/ccによる「継続」が有名ですが、ならばコルーチンでしょう、ということになりました。しくみがわかりやすいようにシンプルなものにしました。
#lang racket (define cont #f) (call/cc (lambda (return) ((lambda (yield)(yield 1)(yield 2)(yield 4)) (lambda (value) (call/cc (lambda (c) (set! cont c) (return value)))))))
今回使ったこのDrRacketというツールは、初めて使ったのですが、とても高機能で使いやすいです。再びはまったのも、このツールによるところが大です。
http://blog.livedoor.jp/kosugip/archives/692821.html 参考