Вот смотри, лор. Хочу осилить кондуиты, для этого пишу простую программу.
Суть:
- читаем файл в виде текста Data.Text.Lazy (размер может быть очень большой)
- считаем, сколько раз в тексте встречается каждая последовательность из 3х символов (условно). В тексте «aoaoa» последовательность «aoa» встречается 2 раза, а «oao» только один. То есть нужно брать сначала символы с 0-2 потом с 1-3 и так далее и засовывать их в словарь как ключ, значение словаря - число попаданий.
- Сгенерировать на основе словаря последовательность из n «слов» (3х символьных кусков из п.2) так, чтобы вероятность попадания каждого такого слова была тем выше, чем чаще оно встречается в оригинальном тексте
Цель: феерически скоростная программа, кушающая файлы на субсветовых скоростях (ограничение по диску). Само собой программа должна работать в постоянном объеме памяти с высокой эффективностью, чтобы GC не сходил с ума.
Хочу заюзать хэш таблицы из judy (отговорите меня кто-нибудь).
Понимаю, что кондуиты тут не нужны, так как ленивый текст и так читает кусками по 64к, и по мере потребления текста в IO действиях над judy он будет подгружаться.
Если есть более лучшая идея для вкуривания кондуитов, то будет рассмотрена.