Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Выполнение работы. Лисп обычно используется в режиме интерпретации




Лисп обычно используется в режиме интерпретации. Интерпретатор Лиспа функционирует следующим образом: когда пользователь заканчивает ввод какого-либо выражения, интерпретатор вычисляет и выдает значение этого выражения. Рассмотрим простейший пример. Введите в окне FreeLisp Listener следующее выражение и нажмите клавишу enter:

CL-USER 1 > 3

Мы ввели число 3, которое является атомом и, следовательно, s-выражением. Интерпретатор Лиспа вычисляет значение этого s-выражения и выдает результат. Он совпадает с введенным выражением, поскольку значением числа является само это число. Введем следующее выражение:

CL-USER 2 > (+ 2 5); s-выражение

7; результат

При вычислении s-выражений интерпретатор Лиспа следует следующим правилам:

1. Если s-выражение число, то значением этого выражения является само это число.

2. Если s-выражение список, то значения всех аргументов, исключая первый, вычисляются, а затем передаются как аргументы в функцию, обозначенную первым символом.

Например, при вычислении значения выражения
(* (+ 1 2) (- 4 3)) интерпретатор вначале вычислит значения первого и второго аргументов функции «*». Первый и второй аргументы являются списками. В каждом из этих списков аргументы являются числами. Значением числа является само это число. Числа 1 и 2 передаются в качестве аргументов в функцию «+». Числа 4 и 3 передаются в качестве аргументов в функцию «-». Затем результаты вычисления первого и второго выражений
(3 и 1) передаются в качестве аргументов в функцию «*».

 

Пока что мы не рассмотрели как вычисляются 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)





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 420 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

80% успеха - это появиться в нужном месте в нужное время. © Вуди Аллен
==> читать все изречения...

2272 - | 2125 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.007 с.