Головна сторінка Випадкова сторінка КАТЕГОРІЇ: АвтомобіліБіологіяБудівництвоВідпочинок і туризмГеографіяДім і садЕкологіяЕкономікаЕлектронікаІноземні мовиІнформатикаІншеІсторіяКультураЛітератураМатематикаМедицинаМеталлургіяМеханікаОсвітаОхорона праціПедагогікаПолітикаПравоПсихологіяРелігіяСоціологіяСпортФізикаФілософіяФінансиХімія |
Галузева та продуктово-асортиментна;Дата добавления: 2015-08-30; просмотров: 589
Лисп обычно используется в режиме интерпретации. Интерпретатор Лиспа функционирует следующим образом: когда пользователь заканчивает ввод какого-либо выражения, интерпретатор вычисляет и выдает значение этого выражения. Рассмотрим простейший пример. Введите в окне FreeLisp Listener следующее выражение и нажмите клавишу enter: CL-USER 1 > 3 Мы ввели число 3, которое является атомом и, следовательно, s-выражением. Интерпретатор Лиспа вычисляет значение этого s-выражения и выдает результат. Он совпадает с введенным выражением, поскольку значением числа является само это число. Введем следующее выражение: CL-USER 2 > (+ 2 5) ; s-выражение 7 ; результат При вычислении s-выражений интерпретатор Лиспа следует следующим правилам: 1. Если s-выражение число, то значением этого выражения является само это число. 2. Если s-выражение список, то значения всех аргументов, исключая первый, вычисляются, а затем передаются как аргументы в функцию, обозначенную первым символом. Например, при вычислении значения выражения
Пока что мы не рассмотрели как вычисляются s-выражения, которые являются символами. Если мы зададим следующее символьное выражение, то получим сообщение об ошибке. CL-USER 3 > A Error: The variable A is unbound Символы можно использовать как переменные. В этом случае они могут обозначать некоторые выражения. У символов изначально нет какого-нибудь значения как у констант. В нашем примере интерпретатор не может вычислить значение символа, поскольку его у символа нет. Свяжем переменную A с каким-либо значением, используя функцию setf: CL-USER 4 > (setf A 3) Теперь, когда мы связали значение с переменной A, интерпретатор позволит нам вычислить значение s-выражение: CL-USER 5 > A Мы можем использовать переменную A в более сложном s-выражении: CL-USER 6 > (+ A A) Рассмотрим еще несколько примеров применения описанных выше функций: CL-USER 7 > quote (+ 2 5) (+ 2 5) Обратите внимание на использование функции quote, которая просто возвращает переданный ей аргумент. Аналогом функции quote является символ ’. CL-USER 8 > ’(+ 2 5) (+ 2 5) CL-USER 9 > (+ 2 5)
Некоторые примеры использования функций работы со списками: CL-USER 10 > (car ’(1 2 3)) CL-USER 11 > (cdr ’(1 2 3)) (2 3) CL-USER 12 > (nth 1 ’(1 2 3)) ; нумерация с нуля CL-USER 13 > (first ’(1 2 3)) CL-USER 14 > (list 1 2 3) (1 2 3) CL-USER 15 > (cons 1 ’(2 3)) (1 2 3)
|