Alterator/libraries: различия между версиями
Нет описания правки |
м (category: more specific) |
||
(не показано 5 промежуточных версий 3 участников) | |||
Строка 1: | Строка 1: | ||
[[Category: | [[Category:alterator]] | ||
[[category:scheme]] | |||
==Стандартные библиотеки scheme, предоставляемые alterator== | |||
===Работа со строками (alterator str)=== | |||
===Работа со строками (alterator | |||
{| class="standard" | {| class="standard" | ||
Строка 62: | Строка 62: | ||
|} | |} | ||
=== Списки свойств === | === Списки свойств (alterator plist)=== | ||
Списки свойств - это списки вида '''(параметр значение параметр значение ...)''' удобны прежде всего для пользователей так как содержат меньше скобок, используются как замена ассоциативных списков. | Списки свойств - это списки вида '''(параметр значение параметр значение ...)''' удобны прежде всего для пользователей так как содержат меньше скобок, используются как замена ассоциативных списков. | ||
= | {|class="standard" | ||
!функция | |||
!описание | |||
|- | |||
|nowrap="yes"|plistq <параметр> <список> | |||
|Аналог assq. Возвращает пару (имя . значение) если соответствующее имя найдено в списке или #f | |||
= | |- | ||
|nowrap="yes"|cond-plistq <параметр> <список> [<значение по умолчанию>] | |||
|Расширение plistq. Аналог cond-assq для списка свойств. | |||
|} | |||
Аналог | |||
= | |||
Аналог cond-assq для списка свойств. | |||
==="Ячейки" (alterator algo)=== | ==="Ячейки" (alterator algo)=== |
Текущая версия от 11:50, 21 июня 2016
Стандартные библиотеки scheme, предоставляемые alterator
Работа со строками (alterator str)
функция | описание |
---|---|
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. Выполняет последовательно процедуры и возвращает первой. |