Podstawowa wydajność we / wy w Haskell

Kolejny mikrobenchmark: Dlaczego ta „pętla” (skompilowana zghc -O2 -fllvm, 7.4.1, jądro Linux 64bit 3.2, przekierowane do/dev/null)

mapM_ print [1..100000000]

około 5 razy wolniej niż zwykły cykl na zwykłymC zwrite(2) nie buforowane wywołanie systemowe? Próbuję zebrać Haskella.

Nawet to powolne rozwiązanie C jest znacznie szybsze niż Haskell

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

questionAnswers(3)

yourAnswerToTheQuestion