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

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

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





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; просмотров: 683. Нарушение авторских прав; Мы поможем в написании вашей работы!




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


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


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


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Примеры решения типовых задач. Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2   Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2. Найдите константу диссоциации кислоты и значение рК. Решение. Подставим данные задачи в уравнение закона разбавления К = a2См/(1 –a) =...

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

В теории государства и права выделяют два пути возникновения государства: восточный и западный Восточный путь возникновения государства представляет собой плавный переход, перерастание первобытного общества в государство...

Задержки и неисправности пистолета Макарова 1.Что может произойти при стрельбе из пистолета, если загрязнятся пазы на рамке...

Вопрос. Отличие деятельности человека от поведения животных главные отличия деятельности человека от активности животных сводятся к следующему: 1...

Расчет концентрации титрованных растворов с помощью поправочного коэффициента При выполнении серийных анализов ГОСТ или ведомственная инструкция обычно предусматривают применение раствора заданной концентрации или заданного титра...

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