秒ごとに何かやる処理を表現できます。用いて、次のようなコードを書くのが流行しました。オブジェクトを返します。する、を繰り返す補助関数です。これらによって本質的には上のコルーチンのコードと同等になっています*6。コミュニティでは、このイディオムを漠然と「コルーチン」と呼ぶようです。ことをジェネレータと呼びます)「ブロック処理があったら関数実行が中断する」という説明がなんとなく「中断できる関数」という非対称コルーチンの説明に似ているからというのが何となく絡み合って、慣習になったのだと思われます。実際、このあたりを混乱したような説明をしばしば見かけます。ここで言っている「中断」は、非対称コルーチンで言っていた「中断」とはもはや意味が違うことに注意してください。このイディオムの説明で言う「中断」は、「ブロック処理を待つこと」であって、「呼び出し側に処理を一旦返すこと」ではなくなっています。事情に特化したものになっています。(これ以下削除で良さそう)上のイディオムの中で、具体的に何をコルーチンと呼んでいるかは、人によって異なるようです。少なくとも以下が観測できました。いう専用の文法を導入するに至りました。参考に取り込んだと思われます。print("baz");}これはしばしば、前述の「イディオム」への構文糖として説明されます*7。呼ぶようで、これのことをコルーチンとは呼んでいないと思います。前述のイディオムとの区別が曖昧になりますしね。伝統的コルーチンは、全くの別物であることに注意してください。構文糖ではありますが、非対称コルーチンの特徴を失っています。暗黙的に埋め込まれるので、「呼び出し側に処理を一旦戻す」ということができなくなっているのです。してしまうので、非対称コルーチンでいう「中断」にはなりません。他にも異なる点があります。したとき、次にどのコルーチンが再開するかはプログラマは完全に把握できるものでした。よって、「次にどのコルーチンが再開するかをプログラマが制御する・制御できる」という性質もコルーチンの特徴のひとつと考えられていました。再開可能な状態になる、という状況が生まれました。再開するかは、言語やライブラリが用意したスケジューラが勝手に決める(プログラマが管理しない・できない)ということになります。伝統的コルーチンは、全くの別物です。非同期処理の記述として大ヒットし、他言語にも取り入れられるようになりました。「コルーチン」と名付けました。切り出す」と書かれています。イディオムを念頭においているようです。「コルーチン」と呼んでいません。コミュニティでなんとなく呼ばれている「コルーチン」を、なんとなく持ってきたのだと思います。指して「コルーチン」と呼ぶ用法が確立したようです。相当の機能を埋め込むわけではなくもう少しややこしいもののようです。組み合わせれば、対称コルーチンをエンコードすることも出来るようです。定義された関数は対称コルーチンである」とは(普通は)言わないと思います。すべてまとめて「コルーチン」と呼ぶようです。状況までを踏まえて、このようにしたのではないかと思います。まとめコルーチンという言葉はプログラミング言語文化圏によって、いろいろなものを指します。年で、その意味はとても拡散してしまったようです。なんか事実誤認があったらご指摘ください。さんや笹田耕一さんにご協力いただきました。ありがとうございました。並行処理を記述する言語機能です。こんな感じに動きます。そこで、例によってコールバックを使います*9。計算が終わったあとでコールバックしてくれます。連続で待ちたい場合、単純に考えると入れ子にする必要があります。});});これではインデント問題は解決されません。