Haskell leer / escribir archivos binarios completa ejemplo de trabajo

Ojalá si alguien proporciona un código de trabajo completo que permita hacer lo siguiente en Haskell:

Lea una secuencia muy grande (más de mil millones de elementos) de valores int de 32 bits de un archivo binario en un contenedor apropiado (por ejemplo, ciertamente no es una lista, por problemas de rendimiento) y duplique cada número si es menor que 1000 (decimal) y luego escriba los valores int de 32 bits resultantes en otro archivo binario. Es posible que no quiera leer todo el contenido del archivo binario en la memoria a la vez. Quiero leer un fragmento después del anterior.

Estoy confundido porque pude encontrar muy poca documentación sobre esto. Data.Binary, ByteString, Word8 y lo que no, solo aumenta la confusión. Hay una solución bastante sencilla para tales problemas en C / C ++. Tome una matriz (por ejemplo, de unsigned int) del tamaño deseado, y use las llamadas de la biblioteca de lectura / escritura y termine con ella. En Haskell no me pareció tan fácil, al menos para mí.

Agradecería si su solución utiliza el mejor posibleestándar paquetes que están disponibles con Haskell convencional (> GHC 7.10) y no algunos oscuros / obsoletos.

Leo de estas paginas

https://wiki.haskell.org/Binary_IO

https://wiki.haskell.org/Dealing_with_binary_data

Respuestas a la pregunta(3)

Su respuesta a la pregunta