На этом шаге мы рассмотрим некоторые переменные, которые помогут управлять выводом.
Управляющие переменные для управления выводом служат для усиления контроля программ muLISP над выходными символами. Наиболее удобно использовать здесь в качестве переключателей OFF (NIL) или ON (не NIL).
Если ECHO - NIL, то символы не отражаются на консоли.
Если LINELENGTH - не NIL, то выходные строки автоматически ограничиваются так, как определено функцией LINELENGTH.
Если LENGTH - NIL, то все автоматические ограничения на длину строки устраняются. Это особенно удобно в тех случаях, когда ограничения на длину строки нежелательны, т.е. для редактора экрана muSTAR или при пересылке очень большого количества данных в дисковый файл.
Если *PRINT-DOWNCASE* есть NIL, то Р-имена таких символов не разграничиваются.
Разграничение Р-имен символов с помощью разграничительных символов необходимо для программ, которые генерируют исходные файлы muLISP.
$ (SETQ TEN 10) 10 $ (SETQ *PRINT-BASE* 16) 10 $ TEN 0A ; Ten в шестнадцатеричной форме записи $ (SETQ *PRINT-BASE* 2) 10 $ TEN 1010 ; Ten в двоичной форме записи $ (SETQ *PRINT-BASE* 10) 10 $ TEN 10 ; Ten в десятичной форме записи
Отметим, что значение управляющей переменной *PRINT-POINT* влияет только на выдачу чисел на экран, но не влияет на их точность. Кроме того, числа могут записываться либо с использованием десятичного представления, либо с помощью слеша, независимо от значения *PRINT-POINT*.
Значение *PRINT-POINT* по умолчанию равно 7. Например:
$ (SETQ P1 3.1416) $ (SETQ *PRINT-POINT* 2) 3.1416 2 $ (SETQ *PRINT-POINT* NIL) $ P1 NIL 3.14 $ P1 $ (SETQ *PRINT-POINT* 7) 3927/1250 7 $ P1 3.1416
$ (SETQ *PRINTER-ECHO* T) ; включен вывод на принтер $ (SETQ *PRINTER-ECHO* NIL) ; отключен вывод на принтер
Разграничение Р-имен таких символов с помощью разграничительных символов необходимо для программ, которые генерируют исходные файлы muLISP.
Со следующего шага мы начнем рассматривать реализацию инкапсулированных типов данных.