「PHPでforeachで反復できるものは何でしょう?」配列、オブジェクト、Iterator、そして“ジェネレータ”です。
ジェネレータは言語によってコルーチン、semicoroutineやFiberとも呼ばれるものと同等の言語機能であり、SICPのような計算機科学の教科書で説明されるストリーム・無限リストを簡潔に実現できます。
foreachループで配列を反復するのは既に作成済みのデータを頭から辿っていくだけのものであるのに対して、ジェネレータは配列のキーや要素に相当するものを計算によって生み出すことができるため、省メモリで効率のよい計算が可能です。
このトークではジェネレータの基礎概念と、実際に応用できるパターンについて紹介していきます。