A String
- это список из Char
s, он определяется как:
type String = [Char]
Это, однако, не очень хороший формат, когда вы хотите обработать большое количество текста в массе. Накладные расходы с точки зрения памяти и циклов будут довольно большими.
Тип данных Text
хранит символы в виде фрагмента символов UTF-16. Таким образом, это означает, что нет никаких накладных расходов на память, и, кроме того, лучше с точки зрения кэширования, если символы расположены рядом друг с другом, поэтому обработка выполняется быстрее.
Если вы используете строгий Text
(тот, который вы импортируете из Data.Text
), тогда это означает, что текст должен поместиться в памяти. Data.Text.Lazy
работает с патронами и, таким образом, лениво вычисляет следующий блок и, следовательно, может иногда работать со строками, которые не помещаются в памяти в целом.