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

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

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






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



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

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

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

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

СИНТАКСИЧЕСКАЯ РАБОТА В СИСТЕМЕ РАЗВИТИЯ РЕЧИ УЧАЩИХСЯ В языке различаются уровни — уровень слова (лексический), уровень словосочетания и предложения (синтаксический) и уровень Словосочетание в этом смысле может рассматриваться как переходное звено от лексического уровня к синтаксическому...

Плейотропное действие генов. Примеры. Плейотропное действие генов - это зависимость нескольких признаков от одного гена, то есть множественное действие одного гена...

Методика обучения письму и письменной речи на иностранном языке в средней школе. Различают письмо и письменную речь. Письмо – объект овладения графической и орфографической системами иностранного языка для фиксации языкового и речевого материала...

Кран машиниста усл. № 394 – назначение и устройство Кран машиниста условный номер 394 предназначен для управления тормозами поезда...

Приложение Г: Особенности заполнение справки формы ву-45   После выполнения полного опробования тормозов, а так же после сокращенного, если предварительно на станции было произведено полное опробование тормозов состава от стационарной установки с автоматической регистрацией параметров или без...

Измерение следующих дефектов: ползун, выщербина, неравномерный прокат, равномерный прокат, кольцевая выработка, откол обода колеса, тонкий гребень, протёртость средней части оси Величину проката определяют с помощью вертикального движка 2 сухаря 3 шаблона 1 по кругу катания...

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