En Haskell, Iteratee based I/O parece muy atractivo. Los iterados son formas compostables, seguras y rápidas de hacer E/S inspiradas en la función 'fold' a.k.a. 'reducir' en lenguajes funcionales. Básicamente, si tiene un recorrido, la idea es encapsular el estado transversal en el llamado "enumerador" que llama al "iterado", que a su vez es una función que devuelve un valor o una solicitud de más datos junto con una continuación para que el enumerador llame Por lo tanto, solo el enumerador conoce el estado del cruce mientras que el iterado sabe qué hacer con los datos y genera valores a partir de él. Lo bueno de esto es que las iteraciones son compuestas automáticamente, donde la salida de una iteración se alimenta a otra para hacer una más grande.¿iterar E/s tiene sentido en lenguajes no funcionales?
Así, dos preguntas:
- ¿El concepto aún hacen SENCE en otros idiomas, como lenguajes orientados a objetos simples o es sólo útil para superar las deficiencias de I perezosa de Haskell/S?
- ¿Existen implementaciones reales para otros lenguajes, especialmente C# (ya que eso es lo que usa mi empresa)? (Una búsqueda en Google hace aparecer una mención de iterar en Scala; bueno, no estoy tan interesado en Scala en este momento).
¿No es eso básicamente para lo que está diseñado el nuevo material asíncrono en C# 5.0? El mecanismo es diferente, pero la implementación subyacente es básicamente una de continuación. –
Gracias por señalar eso. Aún no lo sabía, y ciertamente parece emocionante, así que tengo que analizarlo, aunque no puedo ver mucho que tenga en común con las iteraciones. ;-) – firefrorefiddle