Harold Abelson and Gerald Jay Sussman with ... - ftp.linux.kiev.ua.
Harold Abelson and Gerald Jay Sussman with ... - ftp.linux.kiev.ua.
Harold Abelson and Gerald Jay Sussman with ... - ftp.linux.kiev.ua.
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
1.1. Элементы программирования 27<br />
Эти правила форматирования называются красивая печать (pretty printing). Согласно<br />
им, всякая длинная комбинация записывается так, чтобы ее операнды выравнивались<br />
вертикально. Получающиеся отступы ясно показывают структуру<br />
выражения 6 .<br />
Даже работая со сложными выражениями, интерпретатор всегда ведет себя<br />
одинаковым образом: он считывает выражение с терминала, вычисляет его и печатает<br />
результат. Этот способ работы иногда называют циклом чтение-вычислениепечать<br />
(read-eval-print loop). Обратите особое внимание на то, что не нужно специально<br />
просить интерпретатор напечатать значение выражения 7 .<br />
1.1.2. Имена и окружение<br />
Одна из важнейших характеристик языка программирования — какие в нем<br />
существуют средства использования имен для указания на вычислительные объекты.<br />
Мы говорим, что имя обозначает переменную (variable), чьим значением<br />
(value) является объект.<br />
В диалекте Лиспа Scheme мы даем вещам имена с помощью слова define.<br />
Предложение<br />
(define size 2)<br />
заставляет интерпретатор связать значение 2 с именем size 8 . После того, как<br />
имя size связано со значением 2, мы можем указывать на значение 2 с помощью<br />
имени:<br />
size<br />
2<br />
(* 5 size)<br />
10<br />
Вот еще примеры использования define:<br />
6 Как правило, Лисп-системы содержат средства, которые помогают пользователям форматировать<br />
выражения. Особенно удобны две возможности: сдвигать курсор на правильную позицию<br />
для красивой печати каждый раз, когда начинается новая строка и подсвечивать нужную<br />
левую скобку каждый раз, когда печатается правая.<br />
7 Лисп следует соглашению, что у всякого выражения есть значение. Это соглашение, вместе<br />
со старой репутацией Лиспа как неэффективного языка, послужило источником остроумного<br />
замечания Алана Перлиса (парафразы из Оскара Уайльда), что «Программисты на Лиспе<br />
знают значение всего на свете, но ничему не знают цену».<br />
8 Мы не печатаем в этой книге ответы интерпретатора при вычислении определений, поскольку<br />
они зависят от конкретной реализации языка.