Инструменты пользователя

Инструменты сайта


examination:flp:question18

Основной цикл: READ-EVAL-PRINT

Диалог с интерпретатором Лиспа на самом верхнем, командном уровне (top level), можно описать простым циклом:

(print '_)           ;вывод приглашения 
(setq е (read))      ;ввод выражения 
(setq v (eval e))    ;вычисление его значения 
(print v)            ;вывод результата 
(print '_)           ;повторение цикла 


Интерпретатор Лиспа отвечает на заданный ему вопрос и ждет новое задание. Некоторые системы на командном уровне работают в режиме, который называют EVALQUOTE. В этом режиме имя функции можно выносить за открывающую скобку, как это обычно принято при записи математических функций. Кроме того, как это видно и из названия, автоматически блокируется вычисление аргументов. Например:

+(2 3) => 5 
cons(a (Ь с)) =» (а Ь с) 


Хотя при этом можно избежать использования знака апострофа, но в то же время на командном уровне пропадает простая возможность задать вычисляемые аргументы функции. Для аргументов, требующих вычисления, можно либо использовать способ отмены блокировки вычислений, либо в самой функции специально использовать вызов интерпретатора (EVAL).

examination/flp/question18.txt · Последние изменения: 2014/01/15 08:17 (внешнее изменение)