МОНУ НТУУ КПІ ім. Ігоря Сікорського ФПМ СПіСКС
Звіт з лабораторної роботи 1
"Обробка списків з використанням базових функцій"
дисципліни "Вступ до функціонального програмування"
Студент: Бойко Дмитро Павлович КВ-11
Рік: 2024
- Створіть список з п'яти елементів, використовуючи функції LIST і CONS . Форма створення списку має бути одна — використання SET чи SETQ (або інших допоміжних форм) для збереження проміжних значень не допускається. Загальна кількість елементів (включно з підсписками та їх елементами) не має перевищувати 10-12 шт. (дуже великий список робити не потрібно). Збережіть створений список у якусь змінну з SET або SETQ . Список має містити (напряму або у підсписках): • хоча б один символ • хоча б одне число • хоча б один не пустий підсписок • хоча б один пустий підсписок
- Отримайте голову списку.
- Отримайте хвіст списку.
- Отримайте третій елемент списку.
- Отримайте останній елемент списку.
- Використайте предикати ATOM та LISTP на різних елементах списку (по 2-3 приклади для кожної функції).
- Використайте на елементах списку 2-3 інших предикати з розглянутих у розділі 4 навчального посібника.
- Об'єднайте створений список з одним із його непустих підсписків. Для цього використайте функцію APPEND.
;create list
[1]> (setq first-list (cons 'A (list 123 (list 'B 4) () "hello")))
(A 123 (B 4) NIL "hello")
;car example
[2]> (car first-list)
A
;cdr example
[3]> (cdr first-list)
(123 (B 4) NIL "hello")
;third example
[4]> (third first-list)
(B 4)
;last example
[5]> (car (last first-list))
"hello"
;atom examples
[6]> (atom (car first-list))
T
[7]> (atom (third first-list))
NIL
[8]> (atom (car (last first-list)))
T
;listp examples
[9]> (listp (third first-list))
T
[12]> (listp (car first-list))
NIL
[13]> (listp (cdr (third first-list)))
T
;other predicates
[14]> (+ 10 (second first-list))
133
[15]> (numberp (car first-list))
NIL
[16]> (eql (second first-list) 123)
T
;append example
[17]> (append first-list (third first-list))
(A 123 (B 4) NIL "hello" B 4)
[1]> (defvar second-list nil)
SECOND-LIST
[2]> (defvar mini-list nil)
MINI-LIST
[3]> (setq mini-list '(A 2 1) second-list (list mini-list 'B (cdr mini-list) 'C))
((A 2 1) B (2 1) C)
