Я хочу напечатать список интегралов, разделенных пробелами, в стандартный вывод.Генерация списка быстрая, поэтому я попытался решить эту проблему с помощью последовательности [1..200000].
В C я могу реализовать это так:
#include "stdio.h"
int main()
{
int i;
for(i = 0; i <= 200000; ++i)
printf("%d ", i);
return 0;
}
Самый быстрыйРешение на Haskell, которое я мог реализовать, примерно в три раза медленнее:
import Data.List (intercalate)
main = putStr . intercalate " " . map (show) $ [1..(200000)]
Я пробовал ByteStrings в некотором роде, но с ними он стал еще медленнее.Кажется, что большие проблемы заключаются в преобразовании целых чисел в строки с помощью show (или преобразовании в ByteStrings).
Любые предложения, как ускорить это, не взаимодействуя с C?Он не должен усложняться (настолько коротким и красивым, насколько это возможно, использование других модулей Haskell - это нормально).