Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
03_LR_FLP.doc
Скачиваний:
5
Добавлен:
11.07.2019
Размер:
101.38 Кб
Скачать

Методичні вказівки

Загальні рекомендації

Виконання завдання передбачає обов’язкове застосування функціоналів.

Використання функціоналів корисно у наступних випадках:

  1. коли потрібно виконати циклічні операції над кожним елементом списку, застосовують функціонали, які відображають;

  2. коли задача передбачає попередню підготовку даних для обчислення, застосовують аплікативні функціонали.

Таким чином, при виконанні завдання спочатку необхідно визначити функцію для обробки одного елементу списку, а потім застосувати цю функцію відносно всього списку за допомогою функціонала.

При розробці «фільтрів» (видалення будь-яких атомів зі списку тощо) необхідно розробити спочатку відповідну предикатну функцію. У подальшому слід використати предикатну функцію у складі лямбда-виразу у якості функціонального аргументу для функціоналів MAPCAN або MAPCON (див. приклад в табл. 3.4).

Приклад виконання завдання

Завдання: полічити кількість числових атомів у списку.

Рішення:

Полічити кількість числових атомів можна наступним чином:

  1. створити список, в якому записується одиниця, якщо атом числовий, і нуль – якщо атом є символьним.

  2. обчислити суму елементів отриманого списку

Для визначення числового атому можна застосувати предикатну функцію NUMBERP. Тоді, для перетворення атому запишемо лямбда-вираз:

(lambda (X) (if (numberp X) 1 0))

і застосуємо його для кожного атому списку за допомогою функціонала MAPCAR. Для обчислення суми використаємо аплікативний функціонал APPLY з функціональним аргументом “+”:

(defun CalcSum (Lst)

(apply ‘+ (mapcar ‘(lambda (X) (if (numberp X) 1 0)) Lst))

)

Очевидно, що виклик функції

(CalcSum ‘(a 45 7 b d 9))

повертає результат 3

Контрольні запитання:

  1. Визначення функціонального аргументу

  2. Визначення функціонала

  3. Аплікативні функціонали

  4. Функціонали, що відображають

  5. Визначення лексичного замикання

34

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]