Alterator/libraries: различия между версиями
м (category: more specific) |
|||
(не показано 18 промежуточных версий 3 участников) | |||
Строка 1: | Строка 1: | ||
[[Category: | [[Category:alterator]] | ||
[[category:scheme]] | |||
==Стандартные библиотеки scheme, предоставляемые alterator== | |||
===Работа со строками (alterator str)=== | |||
=== Работа со строками (alterator | |||
{| class="standard" | {| class="standard" | ||
!функция | !функция | ||
!описание | !описание | ||
|- | |- | ||
|nowrap="yes"|string-cut <строка> <символ-разделитель> | |nowrap="yes"|string-cut <строка> <символ-разделитель> | ||
| | |Делит строку по разделителю. Ссылка на string-split, специфичную для guile функцию. | ||
|- | |- | ||
|nowrap="yes"|string-cut-repeated <строка> <символ-разделитель> | |nowrap="yes"|string-cut-repeated <строка> <символ-разделитель> | ||
|string-cut с последующим удалением пустых строк | |string-cut с последующим удалением пустых строк. Удобно когда надо игнорировать повторяющиеся разделители. | ||
|- | |- | ||
|nowrap="yes"|string-quote <процедура> <строка> | |nowrap="yes"|string-quote <процедура> <строка> | ||
| | |Общий механизм для квотирования строк. Процедура имеет тип char->string. | ||
|- | |||
|} | |} | ||
=== Работа со списками === | ===Работа со списками (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. Выполняет последовательно процедуры и возвращает первой. | |||
= | |- | ||
|} | |||
Текущая версия от 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. Выполняет последовательно процедуры и возвращает первой. |