BigEdu.ru

Функції відбору

1. (CAR list), (CDR list). Ці функції відбору (селекторні функції) є примітивними функціями, та були розглянуті раніше. Також було показано як утворити похідні від них функції типу CXXXXR, де X  {A, D, }, при чому між літерами C та R знаходиться хоча б одна літера A чи D.

2. (LAST list) повертає останній на верхньому рівні cons списку list. Відмітимо, що LAST повертає останній cons, але не останній елемент списку. Якщо список є атом, LAST повертає NIL. Останній елемент можна отримати використанням функції CAR від (LAST list).

(DEFUN LAST (LST)

((ATOM LST) NIL)

((ATOM (CDR LST)) LST)

(LAST (CDR LST)) )

$ (LAST '(A B C D)) $ (LAST 'FCO)

(D) NIL

$ (LAST '(A B C . D)) $ (CAR (LAST '(A B C)))

(C . D) C

3. (NTHCDR n list). Якщо n - ноль або додатне ціле, функція повертає n-й CDR списку list. NTHCDR повертає NIL, якщо n не є ані 0, ані додатне ціле, або якщо список list має n або меньш елементів.

(DEFUN NTHCDR (N LST)

((ZEROP N) LST)

((AND (INTEGERP N) (PLUSP N))

((ATOM LST) NIL)

(NTHCDR (SUB1 N) (CDR LST)) ) )

$ (NTHCDR 0 '(A B C D)) $ (NTHCDR 5 '(A B C D))

(A B C D) NIL

$ (NTHCDR 1 '(A B C D)) $ (NTHCDR 2 '(A B . C))

(B C D) C

$ (NTHCDR 2 '(A B C D))

(C D)

4. (NTH n list). Якщо n - ноль або додатне ціле, функція повертає n-й елемент списку list, де CAR списку - нульовий елемент. NTH повертає NIL, якщо n не є ані 0, ані додатне ціле, або якщо список має n або меньш елементів.

(DEFUN NTH (N LST)

((ATOM (NTHCDR N LST)) NIL)

(CAR (NTHCDR N LST)) )

$ (NTH 0 '(A B C D)) $ (NTH 4 '(A B C D))

A NIL

$ (NTH 3 '(A B C D)) $ (NTH 2 '(A B . C))

D NIL

5. (SUBLIST list n m). Якщо n та m - невід’ємні цілі та n m, SUBLIST повертає NIL.

(DEFUN SUBLIST (LST N M)

((INTEGERP N)

((INTEGERP M)

(FIRST (ADD1 (-M N)) (NTHCDR N LST)) )

(NTHCDR N LST) ) )

$ (SUBLIST '(A B C D E F) 2 4) $ (SUBLIST '(A B C D E F) 0 3)

(C D E) (A B C D)

$ (SUBLIST '(A B C D E F) 2 2) $ (SUBLIST '(A B C D E F) 2)

(C) (C D E F)

6. (COUNT object list test). Повертає кількість елементів у списку list, для яких ознака при порівнянні з об’єктом object за тестом test не дорівнює NIL. Якщо тест - аргумент не задано або дорівнює NIL, COUNT використовує EQL - тест.

(COUNT-IF test list). Повертає кількість елементів у списку list, для яких ознака перевірки за тестом не дорівнює NIL.

(DEFUN COUNT1 (OBJ LST TEST)

(count-aux OBJ LST TEST 0) )

(DEFUN count-aux (OBJ LST TEST COUNTER)

((ATOM LST) COUNTER)

( ((NULL TEST)

(SETQ TEST 'EQL) ) )

((FUNCALL TEST OBJ (CAR LST))

(count-aux OBJ (CDR LST) TEST (ADD1 COUNTER)) )

(count-aux OBJ (CDR LST) TEST COUNTER) )

$ (COUNT 'DOG '(CAT DOG COW PIG DOG ANT))

2

$ (COUNT '5 '(4 5 6 7 8) Асоциативним списком називається список пар (тобто cons-ів), які використовуються у muLISP для зв’язку ключа та об’єкта. Функції ASSOC та ASSOC-IF належать класу функцій відбору, які дають можливість отримати доступ до об’єкта, пов’язаному з ключем, який задовольняє тесту.

9. (ASSOC key alist test). Виконує лінійний пошук в асоциативному списку пари, для якої при порівнянні її CAR- елемента з ключем key за тестом test ознака не дорівнює NIL. Якщо тест-аргумент дорівнює NIL або не задан, ASSOC використовує EQL-тест.

(ASSOC-IF test alist). Шукає в асоциативному списку пару, для якої ознака перевірки її CAR - елемента за тестом не є NIL.

Для обох функцій, якщо пара, що задовольняє тесту, знайдена, ця пара выдається, інакше повертається NIL.

(DEFUN ASSOC (KEY ALIST TEST)

((ATOM ALIST) NIL)

((ATOM (CAR ALIST))

(ASSOC KEY (CDR ALIST) TEST) )

( ((NULL TEST)

(SETQ TEST 'EQL) ) )

((FUNCALL TEST KEY (CAAR ALIST))

(CAR ALIST) )

(ASSOC KEY (CDR ALIST) TEST) )

$ (SETQ CAPITALS ‘((USA . WASHINGTON) (FRANCE . PARIS) (JAPAN . TOKYO)))

$ (ASSOC 'FRANCE CAPITALS)

(FRANCE . PARIS)

$ (ASSOC 'AUSTRALIA CAPITALS)

NIL

10. (RASSOC key alist test). Виконує лінійний пошук в асоциативному списку пари, для якої при порівнянні її CDR- елемента з ключем key за тестом test ознака не дорівнює NIL. Якщо тест-аргумент дорівнює NIL або не задан, RASSOC використовує EQL-тест.

(RASSOC-IF test alist). Шукає в асоциативному списку пару, для якої ознака перевірки її CDR - елемента за тестом не дорівнює NIL.

Для обох функцій, якщо пара, що задовольняє тесту, знайдена, ця пара выдається, інакше повертається NIL.

RASSOC - це скорочення від Reverse ASSOCiate.

(DEFUN RASSOC (KEY ALIST TEST)

((ATOM ALIST) NIL)

((ATOM (CAR ALIST))

(RASSOC KEY (CDR ALIST) TEST) )

( ((NULL TEST)

(SETQ TEST 'EQL) ) )

((FUNCALL TEST KEY (CDAR ALIST))

(CAR ALIST) )

(RASSOC KEY (CDR ALIST) YEST) )

$ (RASSOC 'PARIS CAPITALS)

(FRANCE . PARIS)

$ (RASSOC 'CANBERRA CAPITALS)

NIL

Внимание, отключите Adblock

Вы посетили наш сайт со включенным блокировщиком рекламы!
Ссылка для скачивания станет доступной сразу после отключения Adblock!

Скачать
Рефераты по информатике 1. (CAR list), (CDR list). Ці функції відбору (селекторні функції) є примітивними функціями, та були розглянуті раніше. Також було показано як
Оценок: 425 (Средняя 5 из 5)

Наверняка у вас есть товары или услуги, продажа которых приносит вам максимальную прибыль. Для быстрого старта в сети вам необходимо создание посадочной страницы (одностраничного сайта), на которой будет размещена информация о маржинальных товарах/услугах интернет магазина. За 8 лет опыта разработки конверсионных страниц мы выработали оптимальную структуру, которая позволит привлекать через landing page больше продаж. На такую структуру «одевается» ваш контент — фирменный стиль, тексты, фотографии, уникальные торговые предложения, после чего страница выходит в свет. Разработка лендинга и запуск в сети — до 7 рабочих дней. Стоит отметить, что в разработку самой посадочной страницы входит и написание копирайтером продающих текстов для вашего бизнеса, чтобы каждый посетитель страницы захотел совершить покупку именно у вас. Результат: качественно разработаная продающая посадочная страница, которая готова приносить вам новых клиентов.

© 2016 - 2022 BigEdu.ru