Опубликован: 19.03.2004 | Уровень: специалист | Доступ: платный
Лекция 11:

Варианты, последовательности, множества

< Лекция 10 || Лекция 11: 123 || Лекция 12 >

Обработка множеств и последовательностей

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

Member — выделяет часть списка, начиная с заданного объекта, NIL — если такого объекта в списке нет.

(member 'a (b a c)) ;= (a c)
(member 'd (b a c)) ;= NIL

Set-difference — строит список элементов первого аргумента, не входящих во второй аргумент. Имеет деструктивный аналог — nset-difference .

Set-exlusive-or — строит список элементов первого или второго аргумента, но не входящих в оба сразу. Имеет деструктивный аналог — nset-exlusive-or .

Unionобъединение множеств — строит список элементов первого или второго аргумента. Имеет деструктивный аналог — nunion .

Intersectionпересечение множеств — строит список элементов первого, входящих во второй аргумент. Имеет деструктивный аналог — nintersection .

Delete — строит последовательность из элементов второго аргумента за исключением совпадающих с первым аргументом. Имеет деструктивный аналог — remove .

(delete 1 '(1 2 1 3 1 4)) ;= (2 3 4)

Concatenate — строит новую последовательность заданного типа из своих аргументов, начиная со второго, при этом копирует их, кроме последнего. Для списков имеет деструктивный аналог — nconc .

Elt — выдает элемент последовательности по заданному номеру.

Find — отыскивает заданный символ в последовательности, можно управлять направлением поиска.

Sort — упорядочивает последовательность по заданному предикату.

(sort '(1 2 1 3 1 4) #’<) ;= (1 1 1 2 3 4)

Map — отображает с помощью данной функции ряд последовательностей в новую последовательность типа, заданного первым аргументом. Отображающая функция — второй аргумент. Кратность применения отображающей функции определяется длиной кратчайшего аргумента, начиная с третьего. Имеет деструктивный аналог map-into, строящий результат из первого аргумента.

Reverse — обращает последовательность. Имеет деструктивный аналог nreverse.

Position — выдает номер позиции первого вхождения заданного символа в последовательность.

Substitute — выполняет систематическую замену "старого" символа на "новый" в последовательности. Имеет деструктивный аналог — nsubstitute.

Maphash — методично применяет отображающую функцию двух аргументов к каждой паре из ключа и соответствующего значения в хэш-таблице.

< Лекция 10 || Лекция 11: 123 || Лекция 12 >
Дарья Федотова
Дарья Федотова
Сергей Березовский
Сергей Березовский

В рамках проф. переподготовки по программе "Программирование"

Есть курсы, которые я уже прошел. Но войдя в курс я вижу, что они не зачтены (Язык Ассемблера и архитектура ЭВМ, Программирование на С++ для профессионалов). Это как?

Алина Ленкова
Алина Ленкова
Россия, Ставрополь, СФ МГУПИ, 2014
Валерий Ромашов
Валерий Ромашов
Россия