Наряду с srfi-1,srfi-2,srfi-11,srfi-13 alterator предоставляет свои функции, аналогов которым в R5RS и выше перечисленных srfi к сожалению не обнаружилось.
Работа со строками (alterator string)
функция
|
описание
|
string-cut <строка> <символ-разделитель>
|
Делит строку по разделителю. Ссылка на string-split, специфичную для guile функцию.
|
string-cut-repeated <строка> <символ-разделитель>
|
string-cut с последующим удалением пустых строк. Удобно когда надо игнорировать повторяющиеся разделители.
|
string-quote <процедура> <строка>
|
Общий механизм для квотирования строк. Процедура имеет тип char->string.
|
Работа со списками (alterator algo)
функция
|
описание
|
append1 <список> <элемент>
|
Добавляет один элемент в конец списка. Аналог (append <список> (list <элемент>)).
|
list-remove <список> <номер>
|
Удаляет из списка элемент в указанной позиции.
|
string-list-index <список> <строка>
|
Номер строки в списке или #f если строка в списке отсутствует.
|
cond-car <объект> [<значение по умолчанию>]
|
Расширение car. Возвращает <значение по умолчанию> (или #f если оно не задано) в случае, когда <объект> не список или пустой список.
|
cond-cdr <объект> [<значение по умолчанию>]
|
Расширение cdr
|
cond-cadr <объект> [<значение по умолчанию>]
|
Расширение cadr
|
Работа с ассоциативными списками (alterator algo)
функция
|
описание
|
alist-set <параметр> <значение> <список>
|
Расширение acons. Если в списке уже имеется такой же параметр (сравнение типа equal?), то его значение будет заменено и дубликат не появится
|
cond-assoc <параметр> <список> [<значение по умолчанию>]
|
Расширение assoc. Возвращает найденный элемент (а не пару) или значение по умолчанию (#f если значение не найдено).
|
cond-assq <параметр> <список> [<значение по умолчанию>]
|
Расширение assq
|
Списки свойств (alterator plist)
Списки свойств - это списки вида (параметр значение параметр значение ...) удобны прежде всего для пользователей так как содержат меньше скобок, используются как замена ассоциативных списков.
функция
|
описание
|
plistq <параметр> <список>
|
Аналог assq. Возвращает пару (имя . значение) если соответствующее имя найдено в списке или #f
|
cond-plistq <параметр> <список> [<значение по умолчанию>]
|
Расширение plistq. Аналог cond-assq для списка свойств.
|
"Ячейки" (alterator algo)
alterator-lookout запрещает явное использование операции set!, вместо этого предлагается контейнер cell, с операциями получения и изменения значения.
функция
|
описание
|
make-cell <объект>
|
Создаёт контейнер, хранящий указанный объект
|
cell-ref <контейнер>
|
Возвращает ссылку на сохранённый объект
|
cell-set! <контейнер> <значение>
|
Изменяет объект, сохранённый в контейнере
|
Пример работы с контейнерами:
guile> (use-modules (alterator algo))
guile> (define a (make-cell 3))
guile> (cell-ref a)
3
guile> (cell-set! a 4)
guile> (cell-ref a)
4
Разное (alterator algo)
функция
|
описание
|
begin-1 <процедура> [<процедура>]
|
Как begin. Выполняет последовательно процедуры и возвращает первой.
|