Нормальные функции не могут работать с потоками в целом, поскольку они имеют потенциально неограниченные данные. Формально потоки — это кодаты (потенциально неограниченные), а не данные (которые конечны).
Функции, которые работают с потоком, производящим другой поток, известны как фильтры и могут быть соединены в конвейеры способом, аналогичным композиции функций . Фильтры могут работать с одним элементом потока за раз или могут основывать элемент вывода на нескольких элементах ввода, таких как скользящее среднее .
Примеры
Термин «поток» используется в ряде схожих значений:
"Потоковое редактирование", как в sed , awk и perl . Потоковое редактирование обрабатывает файл или файлы на месте, без необходимости загрузки файла(ов) в пользовательский интерфейс. Одним из примеров такого использования является выполнение поиска и замены во всех файлах в каталоге из командной строки.
В Unix и связанных системах на основе языка C поток является источником или приемником данных, обычно отдельных байтов или символов . Потоки являются абстракцией, используемой при чтении или записи файлов или при обмене данными через сетевые сокеты . Стандартные потоки — это три потока, доступные всем программам.
Устройства ввода-вывода можно интерпретировать как потоки, поскольку они производят или потребляют потенциально неограниченные объемы данных с течением времени.
В языке Scheme и некоторых других поток — это лениво оцененная или задержанная последовательность элементов данных. Поток может использоваться аналогично списку, но последующие элементы вычисляются только при необходимости. Поэтому потоки могут представлять бесконечные последовательности и серии . [1]
Термин «поток» также применяется к разветвлениям файловой системы , где несколько наборов данных связаны с одним именем файла. Чаще всего существует один основной поток, который составляет обычные данные файла, в то время как дополнительные потоки содержат метаданные . Здесь «поток» используется для обозначения «данных переменного размера», в отличие от метаданных фиксированного размера, таких как расширенные атрибуты , но отличается от «потока», используемого в других случаях, означая «данные, доступные с течением времени, потенциально бесконечные».