Alterator/libraries
Материал из ALT Linux Wiki
< Alterator(Различия между версиями)
(→Работа со строками (alterator string)) |
м (category: more specific) |
||
(17 промежуточных версий не показаны.) | |||
Строка 1: | Строка 1: | ||
- | [[Category: | + | [[Category:alterator]] |
- | + | [[category:scheme]] | |
+ | ==Стандартные библиотеки scheme, предоставляемые alterator== | ||
- | + | ===Работа со строками (alterator str)=== | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | === Работа со строками (alterator | + | |
{| class="standard" | {| class="standard" | ||
!функция | !функция | ||
!описание | !описание | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
|- | |- | ||
|nowrap="yes"|string-cut <строка> <символ-разделитель> | |nowrap="yes"|string-cut <строка> <символ-разделитель> | ||
Строка 30: | Строка 20: | ||
|} | |} | ||
- | === Работа со списками === | + | ===Работа со списками (alterator algo)=== |
- | == | + | {|class="standard" |
- | + | !функция | |
- | + | !описание | |
- | + | |- | |
+ | |nowrap="yes"|append1 <список> <элемент> | ||
+ | |Добавляет один элемент в конец списка. Аналог (append <список> (list <элемент>)). | ||
+ | |- | ||
+ | |nowrap="yes"|list-remove <список> <номер> | ||
+ | |Удаляет из списка элемент в указанной позиции. | ||
+ | |- | ||
+ | |nowrap="yes"|string-list-index <список> <строка> | ||
+ | |Номер строки в списке или #f если строка в списке отсутствует. | ||
+ | |- | ||
+ | |nowrap="yes"|cond-car <объект> [<значение по умолчанию>] | ||
+ | |Расширение car. Возвращает <значение по умолчанию> (или #f если оно не задано) в случае, когда <объект> не список или пустой список. | ||
+ | |- | ||
+ | |nowrap="yes"|cond-cdr <объект> [<значение по умолчанию>] | ||
+ | |Расширение cdr | ||
+ | |- | ||
+ | |nowrap="yes"|cond-cadr <объект> [<значение по умолчанию>] | ||
+ | |Расширение cadr | ||
+ | |- | ||
+ | |} | ||
- | + | ===Работа с ассоциативными списками (alterator algo)=== | |
- | + | {| class="standard" | |
- | + | !функция | |
- | + | !описание | |
- | + | |- | |
- | + | |nowrap="yes"|alist-set <параметр> <значение> <список> | |
- | + | |Расширение acons. Если в списке уже имеется такой же параметр (сравнение типа equal?), то его значение будет заменено и дубликат не появится | |
- | + | |- | |
- | Возвращает | + | |nowrap="yes"|cond-assoc <параметр> <список> [<значение по умолчанию>] |
+ | |Расширение assoc. Возвращает найденный элемент (а не пару) или значение по умолчанию (#f если значение не найдено). | ||
+ | |- | ||
+ | |nowrap="yes"|cond-assq <параметр> <список> [<значение по умолчанию>] | ||
+ | |Расширение assq | ||
+ | |- | ||
+ | |} | ||
- | + | === Списки свойств (alterator plist)=== | |
- | + | ||
- | === | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
Списки свойств - это списки вида '''(параметр значение параметр значение ...)''' удобны прежде всего для пользователей так как содержат меньше скобок, используются как замена ассоциативных списков. | Списки свойств - это списки вида '''(параметр значение параметр значение ...)''' удобны прежде всего для пользователей так как содержат меньше скобок, используются как замена ассоциативных списков. | ||
- | === | + | {|class="standard" |
- | + | !функция | |
+ | !описание | ||
+ | |- | ||
+ | |nowrap="yes"|plistq <параметр> <список> | ||
+ | |Аналог assq. Возвращает пару (имя . значение) если соответствующее имя найдено в списке или #f | ||
+ | |- | ||
+ | |nowrap="yes"|cond-plistq <параметр> <список> [<значение по умолчанию>] | ||
+ | |Расширение plistq. Аналог cond-assq для списка свойств. | ||
+ | |} | ||
- | === | + | ==="Ячейки" (alterator algo)=== |
- | + | alterator-lookout запрещает явное использование операции set!, вместо этого предлагается контейнер cell, с операциями получения и изменения значения. | |
- | === | + | {| class="standard" |
- | + | !функция | |
- | + | !описание | |
- | = | + | |- |
- | + | |nowrap="yes"|make-cell <объект> | |
- | + | |Создаёт контейнер, хранящий указанный объект | |
- | + | |- | |
- | + | |nowrap="yes"|cell-ref <контейнер> | |
+ | |Возвращает ссылку на сохранённый объект | ||
+ | |- | ||
+ | |nowrap="yes"|cell-set! <контейнер> <значение> | ||
+ | |Изменяет объект, сохранённый в контейнере | ||
+ | |- | ||
+ | |} | ||
- | + | Пример работы с контейнерами: | |
- | + | <pre> | |
+ | 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 | ||
+ | </pre> | ||
- | ==== | + | ===Разное (alterator algo)=== |
- | + | ||
- | = | + | {| class="standard" |
- | + | !функция | |
- | + | !описание | |
- | + | |- | |
- | + | |nowrap="yes"|begin-1 <процедура> [<процедура>] | |
- | + | |Как begin. Выполняет последовательно процедуры и возвращает первой. | |
- | = | + | |- |
- | + | |} | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + |
Текущая версия на 08: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. Выполняет последовательно процедуры и возвращает первой. |