Визначення функцій в Ліспі, Детальна інформація

Визначення функцій в Ліспі
Тип документу: Реферат
Сторінок: 5
Предмет: Комп`ютерні науки
Автор: Олексій
Розмір: 0
Скачувань: 1370
Мова програмування muLisp для трасировки має програму debug.lsp, яка загружається в середовище Ліспу. Для того, щоб дозволити трасировку будь-якої функції необхідно дати команду (TRACE-FUNCTION func). Якщо після цього викликати функцію function, то на екрані відобразиться шлях виконання функції. Команда (UNTRACE-FUNCTION func) забороняє трасировку функції func. Якщо в тілі функції func існує виклик інших функцій, і ми хочемо побачити їх трасировку, необхідно дозволити їх трасировку. Вираз func=value в трасі означає те, що функція func повертає значення value.

Наприклад, після команд (TRACE-FUNCTION APPEND) (APPEND ‘(q w e) (r t y u)) на екрані відобразиться траса (спочатку перший стовпчик, потім — другий):

APPEND [(q w e) (r t y u)] APPEND = (r t y u)

APPEND [(w e) (r t y u)] APPEND = (e r t y u)

APPEND [(e) (r t y u)] APPEND = (w e r t y u)

APPEND [NIL (r t y u)] APPEND = (q w e r t y u)

Розглянемо трасу функції REVERSE з дозволом трасировки функції APPEND для виразу (REVERSE ‘(q w)) (спочатку перший стовпчик, потім — другий):

REVERSE [(q w)] REVERSE = (w)

REVERSE [(w)] APPEND [(w), (q)]

REVERSE [NIL] APPEND [NIL, (q)]

REVERSE = NIL APPEND = (q)

APPEND [NIL, (w)] APPEND = (w q)

APPEND = (w) REVERSE = (w q)

Завдання

I Варіант завдань

1. Написати функцію, яка знаходить:

a) третій елемент четвертого підсписку г) останній атом лінійного списку

б) перший елемент другого підсписку д) останній атом списку з підсписками

в) перший атом списку з підсписками е)перевіряє належність елемента до списку



2. Написати функцію REVERSE, не використовуючи функцій селектора та конструктора. Вказівка: використайте функції PUSH та POP.

3. Написати функцію, яка:

а) з вихідного списку робить множину в) знаходить різницю двох множин

б) об’єднує дві множини г) знаходить перетин двох множин



II Варіант завдань

1. Написати функції:

а) (REVERSE lst), де lst– список з підсписками. Функція повертає обернений на усіх рівнях список lst.

$ (reverse_all '(1 2 3 (q w e (r t) y) 7 9))

(9 7 (Y (T R) E W Q) 3 2 1)

The online video editor trusted by teams to make professional video in minutes