Конспект установочных лекций по комплексному курсу Информатика, Теория информации

Потоки ввода/вывода


Рассмотрим функциональное представление интерактивных систем. Взаимодействующие (интерактивные) программы могут также пониматься как функции на потоках входных значений, которые в качестве результата порождают потоки выходных значений. Это делает возможным функциональное моделирование распределенных, взаимодействующих систем. Такое толкование подходит как для моделирования программ, которые в интерактивном режиме обмениваются данными с человеком-пользователем, так и для коммуникации между программами.

Поток данных над заданным множеством данных D есть конечная или бесконечная последовательность элементов из D.

С помощью основных функций на потоках могут быть определены функции, которые берут конечные или бесконечные потоки в качестве входа и вырабатывают конечные или бесконечные потоки в качестве выхода, В нотации языков программирования пишут stream m в качестве обозначения типа потока с множеством данных M, где М обозначает множество данных типа m.

Бесконечный поток всех натуральных чисел >= n можно сгенерировать с помощью вызова функции enum(n), где enum определена следующим образом:

fct enum = (nat n)

stream nat: n&enum(n + 1).

Бесконечные потоки могут быть определены и рекурсивно, что становится возможным благодаря использованию нестрогих функций для построения последовательностей.

С помощью функций, обрабатывающих потоки, потоки элементов данных могут обрабатываться слева направо, пока эти элементы хорошо определены, и выдаваться элементы данных в качестве результатов, пока эти результаты хорошо определены. Как только в одном из потоком встречается элемент со значением 1, поток обрывается.

Пустой поток представляет наименьший элемент в префиксном порядке и соответствует неопределенному потоку. Так как функция относительно этого наименьшего элемента префиксного порядка является нестрогой, мы можем задать также нетривиальные рекурсивные объявления для потоков.



Содержание раздела