Alterator/libraries: различия между версиями
Нет описания правки |
|||
Строка 1: | Строка 1: | ||
[[Category:Sisyphus]] | [[Category:Sisyphus]] | ||
Наряду с srfi-1,srfi-2,srfi-11,srfi-13 alterator предоставляет свои функции, аналогов которым в R5RS и выше перечисленных srfi к сожалению не обнаружилось. | Наряду с srfi-1,srfi-2,srfi-11,srfi-13 alterator предоставляет свои функции, аналогов которым в R5RS и выше перечисленных srfi к сожалению не обнаружилось. | ||
Строка 7: | Строка 6: | ||
=== Работа со строками (alterator string)=== | ===Работа со строками (alterator string)=== | ||
{| class="standard" | {| class="standard" | ||
Строка 30: | Строка 29: | ||
|} | |} | ||
=== Работа со списками === | ===Работа со списками (alterator algo)=== | ||
== | {|class="standard" | ||
!функция | |||
!описание | |||
|- | |||
|nowrap="yes"|append1 <список> <елемент> | |||
|Добавляет один элемент в конец списка. Аналог (append <список> (list <элемент>)). | |||
|- | |||
|nowrap="yes"|list-remove <список> <номер> | |||
|Удаляет из списка элемент в указанной позиции | |||
|- | |||
|nowrap="yes"|cond-car <объект> [<значение по умолчанию>] | |||
|Расширение car. Возвращает <значение по умолчанию> (или #f если оно не задано) в случае, когда <объект> не список или пустой список. | |||
|- | |||
|nowrap="yes"|cond-cdr <объект> [<значение по умолчанию>] | |||
|Расширение cdr | |||
|- | |||
|nowrap="yes"|cond-cadr <объект> [<значение по умолчанию>] | |||
|Расширение cadr | |||
|- | |||
|} | |||
==== alist-set ==== | ==== alist-set ==== | ||
Строка 105: | Строка 102: | ||
==== cond-plistq ==== | ==== cond-plistq ==== | ||
Аналог cond-assq для списка свойств. | Аналог cond-assq для списка свойств. | ||
Версия от 13:14, 4 августа 2008
Наряду с srfi-1,srfi-2,srfi-11,srfi-13 alterator предоставляет свои функции, аналогов которым в R5RS и выше перечисленных srfi к сожалению не обнаружилось.
Работа со строками (alterator string)
функция | описание |
---|---|
empty-string? <объект> | Расширение string-null?. Возвращает #f для объектов не являющимися строками |
not-empty-string? <объект> | Расширение (not (string-null?)). Возвращает #f для объектов не являющимися строками |
string-cut <строка> <символ-разделитель> | Делит строку по разделителю. Ссылка на string-split, специфичную для guile функцию. |
string-cut-repeated <строка> <символ-разделитель> | string-cut с последующим удалением пустых строк. Удобно когда надо игнорировать повторяющиеся разделители. |
string-quote <процедура> <строка> | Общий механизм для квотирования строк. Процедура имеет тип char->string. |
Работа со списками (alterator algo)
функция | описание |
---|---|
append1 <список> <елемент> | Добавляет один элемент в конец списка. Аналог (append <список> (list <элемент>)). |
list-remove <список> <номер> | Удаляет из списка элемент в указанной позиции |
cond-car <объект> [<значение по умолчанию>] | Расширение car. Возвращает <значение по умолчанию> (или #f если оно не задано) в случае, когда <объект> не список или пустой список. |
cond-cdr <объект> [<значение по умолчанию>] | Расширение cdr |
cond-cadr <объект> [<значение по умолчанию>] | Расширение cadr |
alist-set
Параметры:
- name - ключ
- value - значение
- alist - ассоциативный список
Вариант acons, но только в отличие от него не накапливает дубликаты в списке. Для сравнения использует eq?
cond-assoc,cond-assq
Параметры:
- name - ключ
- alist - ассоциативный список
- default - параметр по-умолчанию.
Вариант assoc (assq), который возвращает найденный ключ или #f или значение по-умолчанию.
Списки свойств
Списки свойств - это списки вида (параметр значение параметр значение ...) удобны прежде всего для пользователей так как содержат меньше скобок, используются как замена ассоциативных списков.
plist?
Проверяет что объект подходит под определение списка свойств - то есть список с чётным числом элементов.
alist->plist
Преобразует ассоциативный список в список свойств
plist->alist
Преобразует список свойств в ассоциативный список
plist-any
Аналог any из srfi-1. Бежит по списку проверяя предикатом значения, как только предикат выдаёт не ложное значение - оно возвращается в качестве ответа, иначе - ответ #f. Предикат - двухаргументная функция.
plist-map
Работает подобно map из srfi-1 для одного списка. Пропускает список через двух-аргументную функцию.
plist-filter
Аналог filter из srfi-1. Фильтрует список при помощи двух-аргументого предиката. Не прошедшие проверку элементы удаляются из списка (то есть удаляется и ключ и его значение).
plist-fold
Аналог fold из srfi-1. Пропускает список через трёх-аргументную функцию, с параметрами: имя , значение, аккумулятор.
plist-for-each
Аналог for-each из srfi-1. Прогоняет по списку двух-аргументную функцию.
plistq
Аналог assq, возвращает пару: имя-значение , если соответствующее имя найдено в списке.
cond-plistq
Аналог cond-assq для списка свойств.