Rendimiento básico de E / S en Haskell

Otra marca microbiológica: ¿Por qué este "bucle" (compilado conghc -O2 -fllvm, 7.4.1, kernel Linux 64bit 3.2, redirigido a/dev/null)

mapM_ print [1..100000000]

aproximadamente 5 veces más lento que un simple ciclo de ciclo simpleC conwrite(2) ¿syscall sin buffer? Estoy tratando de reunir Haskell Gotchas.

Incluso esta solución de C lenta es mucho más rápida que Haskell

int i;
char buf[16];
for (i=0; i<=100000000; i++) {
    sprintf(buf, "%d\n", i);
    write(1, buf, strlen(buf));
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta