En teoría de tipos y programación funcional , un flujo es un análogo potencialmente infinito de una lista , dado por la definición coinductiva :
Flujo de datos α = Nulo | Contras α ( Stream α )
Generar y computar con flujos requiere una evaluación perezosa , ya sea implícitamente en un lenguaje evaluado perezosamente o creando y forzando thunks en un lenguaje ávido. En los lenguajes totales , deben definirse como codatos y se pueden iterar utilizando corecursion (protegido) .