В 1 семестре 2008-2009 учебного года на практических занятих по обязательному спецкурсу «Парадигмы программирования» изучался язык LISP.
Преподаватель: Александр Геннадьевич Фенстер, fenster@fenster.name, +7 913 9053295.
Рекомендуемая литература: Э. Хювёнен, Й. Сеппянен «Мир Лиспа».
То же самое в сети НГУ: раз, два.
Курсы лекций Л.В.Городней на intuit.ru: Функциональное программирование,
Парадигмы программирования,
Введение в программирование на Лиспе.
| # | Фамилия, имя | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Итого |
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Афонина Алиса | ||||||||||||||||||
| Батурин Алексей | ||||||||||||||||||
| Должикова Анастасия | ||||||||||||||||||
| Зайков Александр | ||||||||||||||||||
| Исаев Валерий | ||||||||||||||||||
| Кременная Ольга | ||||||||||||||||||
| Кузькоков Владислав | ||||||||||||||||||
| Ломакин Сергей | ||||||||||||||||||
| Лысяк Александр | ||||||||||||||||||
| Носова Дарья | ||||||||||||||||||
| Полушкин Михаил | ||||||||||||||||||
| Сорокин Роман | ||||||||||||||||||
| Тищенко Николай | ||||||||||||||||||
| Часовщикова Анна |
LENGTH1, которая
возвращает длину списка:> (LENGTH1 '(A B C))
3
LIST1, которая
объединяет два аргумента в список:> (LIST1 'A 'B)
(A B)
APPEND1, которая
объединяет два списка:> (APPEND1 '(A B) '(C D))
(A B C D)
REVERSE1, которая
«переворачивает» список:> (REVERSE1 '(A B C))
(C B A)
EQ, EQL, =, EQUAL, EQUALP.
Привести примеры S-выражений A и B таких, что
(EQ A B);(EQL A B), но ложно (EQ A B);(= A B), но ложно (EQL A B);(EQUAL A B), но ложно (EQL A B);(EQUALP A B), но ложно (EQUAL A B);(EQUALP A B).ASSOC1,
которая определяет, есть ли в данном списке точечных пар пара с
первым элементом, равным данному атому, и возвращающую второй элемент
этой пары, если такая пара есть, и NIL, если такой пары нет.> (ASSOC1 '((A . 1) (B . 2) (C . 3)) 'B)
2
> (ASSOC1 '((A . 1) (B . 2) (C . 3)) 'D)
NIL
> (ATOMS '((A B) C NIL (D (E F G))))
(A B C NIL D E F G)
> (MERGE1 '(1 3 5) '(2 4))
(1 2 3 4 5)
> (SORT1 '(1 5 2 4 3))
(1 2 3 4 5)
CAR и CDR. Реализовать функцию
MAKE-CAR-CDR, которая принимает три аргумента:
S — произвольное S-выражениеX — произвольный атомQ — произвольный атомCAR, CDR и
Q, такое, что если бы значением атома Q было
S, то результатом вычисления этого выражения был бы атом X.
Проще говоря, функция должна показывать, как при помощи суперпозиции вызовов
CAR и CDR «выделить» X
из выражения S, обозначенного как Q.> (MAKE-CAR-CDR '(A X B) 'X 'Q)
(CAR (CDR Q))
> (PERMUT '(1 2 3))
((1 2 3) (1 3 2) (2 1 3) (2 3 1) (3 1 2) (3 2 1))