Студопедия — Функции обработки списков и точечных пар
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Функции обработки списков и точечных пар






1. list – создание списка из элементов.

(setq a 0.0

b 10.0

c (list a b));с – список ‘(0.0 10.0), который LISP понимает как координаты двумерной точки.

 

2. append – слияние списков в один список.

(append список1 список2 …)

(setq d (append c (list 20.0)));продолжение примера п.1. d – список ‘(0.0 10.0 20.0).

 

3. nth – извлечение из списка элемента по порядковому номеру (нумерация элементов списка начинается с 0).

(nth номер список)

(setq e (nth 1 d));e=10.0 (продолжение примера п.2)

 

4. reverse – перестановка элементов списка в обратном порядке.

(reverse список)

 

5. car – извлечение первого элемента списка или точечной пары.

(car список)

(setq e (car d));e=0.0 (продолжение примера п.2)

 

6. cdr – извлечение подсписка без первого элемента.

(setq e (cdr d));e=’(10.0 20.0) (продолжение примера п.2)

 

7. caar, cadr и аналогичные им

От функций car и cdr путем их повторения в разных комбинациях от двух до четырех раз образованы 28 новых функций, например:

(caar список) равносильно (car (car список))

(cadr список) равносильно (car (cdr список))

(caaar список) равносильно (car (car (car список)))

(caadr список) равносильно (car (car (cdr список)))

(cddddr список) равносильно (cdr (cdr (cdr (cdr список))))

 

8. cons – добавление к списку элемента на первую позицию или создание точечной пары.

(cons элемент список) – добавление элемента к списку.

(cons элемент1 элемент2) – создание точечной пары (элемент1. элемент2)

 

9. vl-list*

(vl-list* 1 2) создает точечную пару (1. 2).

(vl-list* 1 2 3 4) создает точечный список (1 2 3. 4).

(vl-list* 1 2 3 ‘(4 5)) создает список ‘(1 2 3 4 5) (если последний элемент – список).

 

10. member – проверка принадлежности элемента списку, возвращает остаток списка или nil.

(member 3 ‘(1 2 3 4 5)) ® ‘(3 4 5)

(member -3 ‘(1 2 3 4 5)) ® nil

 

11. assoc – применяется к сложному списку (в котором элементами являются списки или точечные пары) и выбирает тот элемент, у которого первый элемент имеет заданное значение.

(assoc 8 ‘((8. “Walls”) (6. “DASHED”))) ® (8. “Walls”)

(assoc 8 ‘((8 9 10) (11 12 13 14 15))) ® (8 9 10)

 

12. apply – применение функции ко всем элементам списка.

(setq a ‘(1 2 3 4 5)

p (apply ‘* a);p=1*2*3*4*5=120

am (apply ‘max a));am=5

Функция apply удобна, когда какую-либо операцию необходимо выполнить над аргументами, количество которых заранее не известно.

 

13. mapcar – применение функции к первым элементам списков, затем – ко вторым элементам списков и т.д.

(setq a ‘(1 2 3 4 5)

b ‘(6 7 8 9 10)

p (mapcar ‘* a b);p=’(6 14 24 36 50)

 

14. vl-every – проверка, возвращает ли тест-функция результат T. Тест- функция применяется к первым элементам списков, затем – ко вторым элементам списков и т.д.

(vl-every ‘= ‘(15 3) ‘(15.0 3.0 9.0)) ® T, так проверка выполняется два раза, и 15=15.0, 3=3.0.

(vl-every ‘< ‘(4 3) ‘(15 7) ‘(15 9)) ® nil, так как ряд первых элементов списков 4<15<15 дает nil.

 

15. foreach – организация вычислений выражений над элементами списка.

(foreach переменная список выражение1 выражение2 …)

(setq s1 0

s2 1

a ‘(1 2 3 4 5))

(foreach p a

(setq s1 (+ s1 p));s1=s1+элемент списка a

(setq s2 (* s2 p)));s2=s2*элемент списка a

 

16. eval – вычисление аргумента функции eval как выражения.

 

17. quote – функция, обратная по отношению к eval. Возвращает свой аргумент, не вычисляя его.

 

18. acad_strlsort – сортировка списка, элементами которого являются строки, по возрастанию.

(acad_strlsort список)

 

19. last – извлекает последний элемент списка.

(last список)

(setq e (last d));e=20.0 (продолжение примера п.2)

 

20. subst – замена старых элементов списка на новые.

(subst новый старый список)

(subst 1 2 ‘(1 2 3 4 3 2 1)) ® ‘(2 2 3 4 3 2 2)

 

21. length – вычисление длины (количества элементов) списка.

(length список)

(length ‘(1 2 3 4 5)) ® 5

(length ‘((1 2 3 4 5))) ® 1

 

22. vl-list-length – вычисление длины (количества элементов) списка.

В отличие от функции length, аргументом функции vl-list-length может быть список, точечная пара или точечный список.

 

23. vl-member-if – проверка истинности результата применения тест-функции хотя бы к одному элементу списка. Возвращаемое значение: остаток списка, начиная с того элемента, для которого тест-функция выдала T.

(vl-member-if ‘zerop ‘(1 0 0 2 0)) ® ‘(0 0 2 0)

 

24. vl-member-if-not – проверка ложности результата применения тест-функции хотя бы к одному элементу списка. Возвращаемое значение: остаток списка, начиная с того элемента, для которого тест-функция выдала nil.

(vl-member-if-not ‘zerop ‘(0 0 2 0)) ® ‘(2 0)

 

25. vl-position – вычисление номера позиции элемента в списке. Нумерация элементов списка начинается с 0.

(vl-position элемент список)

 

26. vl-remove – удаление элемента из списка.

(vl-remove элемент список)

(vl-remove 2 ‘(1 2 12 2 1)) ® ‘(1 12 1)

 

27. vl-remove-if – удаление из списка всех элементов, возвращающих T при проверке тест-функцией.

(vl-remove-if ‘тест-функция список)

(vl-remove-if ‘minusp ‘(-1 2 -12 -2 1)) ® ‘(2 1)

 

28. vl-remove-if-not – удаление из списка всех элементов, возвращающих nil при проверке тест-функцией.

(vl-remove-if-not ‘тест-функция список)

(vl-remove-if-not ‘minusp ‘(-1 2 -12 -2 1)) ® ‘(-1 -12 -2)

 

29. vl-some – поочередная проверка тест-функцией элементов с одинаковым номером всех списков. Возвращает T, если тест-функция дала результат T хотя бы один раз.

(vl-some ‘тест-функция список1 список2 …)

(vl-some ‘= ‘(1 2 0) ‘(3 4 0) ‘(5 6 0)) ® T, так как равны третьи элементы списков.

 

30. vl-sort – сортировка элементов в списке таким образом, чтобы после сортировки тест-функция выдавала результат T. Повторяющиеся элементы могут удаляться.

(vl-sort список ‘тест-функция)

(vl-sort ‘(0 4 0 2 2 1) ‘<) ® ‘(0 1 2 4)

 

31. vl-sort-i – вычисление номеров элементов в списке для сортировки по правилу работы функции vl-sort.

(vl-sort-i список ‘тест-функция)

(vl-sort-i ‘(0 4 0 2 2 1) ‘<) ® ‘(2 0 5 4 3 1)

 

32. vl-catch-all-apply – дает возможность обработать прерывание, связанное с ошибкой.

(vl-catch-all-apply ‘* ‘(2 -8 5)) ® -80 (аналогично функции apply).

(vl-catch-all-apply ‘sqrt ‘(-72)) возвращает объект специального типа VL-CATCH-ALL-APPLY-ERROR, при этом не происходит аварийного завершения программы.

 

33. vl-catch-all-error-message – расшифровка сообщения об ошибке, которое закодировано в объекте типа VL-CATCH-ALL-APPLY-ERROR.

(setq a ‘(-72)

b (vl-catch-all-apply ‘sqrt a)

c (vl-catch-all-error-message b));в переменной c сохраняется строка “function undefined for argument: a” (в англоязычной версии). Переменная c может быть использована для вывода сообщений и обработки возникшей ситуации.

 

34. vl-catch-all-error-p – проверка, является ли объект, возвращенный функцией vl-catch-all-apply, объектом типа VL-CATCH-ALL-APPLY-ERROR.

 

 







Дата добавления: 2015-09-04; просмотров: 652. Нарушение авторских прав; Мы поможем в написании вашей работы!



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Метод Фольгарда (роданометрия или тиоцианатометрия) Метод Фольгарда основан на применении в качестве осадителя титрованного раствора, содержащего роданид-ионы SCN...

Потенциометрия. Потенциометрическое определение рН растворов Потенциометрия - это электрохимический метод иссле­дования и анализа веществ, основанный на зависимости равновесного электродного потенциала Е от активности (концентрации) определяемого вещества в исследуемом рас­творе...

Гальванического элемента При контакте двух любых фаз на границе их раздела возникает двойной электрический слой (ДЭС), состоящий из равных по величине, но противоположных по знаку электрических зарядов...

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

Понятие и структура педагогической техники Педагогическая техника представляет собой важнейший инструмент педагогической технологии, поскольку обеспечивает учителю и воспитателю возможность добиться гармонии между содержанием профессиональной деятельности и ее внешним проявлением...

Репродуктивное здоровье, как составляющая часть здоровья человека и общества   Репродуктивное здоровье – это состояние полного физического, умственного и социального благополучия при отсутствии заболеваний репродуктивной системы на всех этапах жизни человека...

Studopedia.info - Студопедия - 2014-2024 год . (0.012 сек.) русская версия | украинская версия