Читайте также:
|
|
Функция чтения read-line отличается от ввода в других языках программирования тем, что она обрабатывает выражение целиком, а не одиночные элементы данных. Вызов этой функции осуществляется пользователем в виде
(cin read-line)
Как только интерпретатор встречает команду read-line, вычисления приостанавливаются до тех пор, пока пользователь не введёт какой-нибудь символ или целиком выражение:
>(cin read-line)(вводимое выражение); выражение пользователя "(вводимое выражение)"; значение функции read-lineОбратите внимание, read-line никак не показывает, что он ждёт ввода выражения. Программист должен сам сообщить об этом при помощи рассматриваемых позже функций вывода. read-line лишь читает выражение и возвращает в качестве значения само это выражение как строку, после чего вычисления продолжаются.
У приведённого выше вызова функции read-line не было аргументов, но у этой функции есть значение, которое совпадает с введённым выражением. По своему действию read-line представляет собой функцию, но у неё есть побочный эффект, состоящий именно во вводе выражения. Учитывая это, read-line является не чистой функцией, а псевдофункцией.
Если прочитанное значение необходимо сохранить для дальнейшего использования, то вызов read-line должен быть аргументом какой-нибудь формы, например присваивания, которая свяжет полученное выражение:
Данная функция и форма, вызывающая интерпретатор read совместно с другими функциями позволяют читать выражения внешние по отношению к программе. Из них можно строить новые выражения или целые программы. Построенные структуры можно вычислить, передав их непосредственно интерпретатору:
>(input read); интерпретатор (2 + 3); список >(nil eval (input read))5Дата добавления: 2015-07-21; просмотров: 92 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Повторение через итерацию или рекурсию | | | Использование файлов |