# langspec/commands.tsv — the command inventory of the built-in library (and the model for every command library).
# One row per command. Columns (tab-separated):
# name the command's name as written in a query
# library the prefix of its library; empty = the built-in library
# pipes the pipes it rides: | @| $| (space-separated)
# synopsis the call forms, ' / '-separated: substr(a..b) / substr(n)
# kind the registry kind: scalar reducing context keyed assoc rendering both; function for an expression function (pipes expr)
# typed the signature(s), ';'-separated, 'in → out': text number int float bool quantity(D) instant duration period
# list(T) record table node reference null value; the input is what the command receives on stdin: the topic after |
# or the list of all topics after @|; 'T…' after → = several results, one thread each
# onnull the result on a null topic: null (the default, left out of the appendix), 'no thread' (an expander forks the thread into one per result and a null topic forks it into none), unchanged, or the value
# en / ru the one-line description, English and Russian
# note_en / note_ru coercions, pass-through, refusals and edges, one sentence each
# anchor the spec label of the section that discusses the command
# issues internal: behaviour that looks inconsistent, to be raised; not rendered
name library pipes synopsis kind typed onnull en ru note_en note_ru anchor issues
graft | graft{text}(target?) scalar text → node null parses a text topic, or the thread's node's text, as the target says and leaves the thread on the parsed document's root, in navigation mode; the operand is written as a mount target without a file: a notation under its default reading (json, markdown, text), a reading prefix over a notation (text:markdown, corpus:latex, koine:markdown, lit:tei, code:rust), a reading alone over the notation the text declares, plain text otherwise, or nothing for a self-declaring text; a source-only reading (web) refuses; a text that does not parse as asked refuses разбирает текстовый топик, или текст узла нити, как говорит цель, и оставляет нить на корне разобранного документа, в режиме навигации; операнд пишется как цель монтирования без файла: нотация в прочтении по умолчанию (json, markdown, text), префикс прочтения над нотацией (text:markdown, corpus:latex, koine:markdown, lit:tei, code:rust), прочтение само по себе над нотацией, которую текст объявляет, иначе простой текст, или ничего для текста, объявляющего себя; прочтение только источника (веб) отклоняет; текст, не разбирающийся как запрошено, отклоняет grafting on demand, the inverse of the output forms (| json, | yaml, | xml) прививка по требованию, обратная формам вывода (| json, | yaml, | xml) sec:composition
upper | upper{value}() scalar value → text null the text in upper case текст в верхнем регистре takes the text coercion of any value, a structure by its output form берёт текстовое приведение любого значения, структуру — в её форме вывода sec:value-commands
lower | lower{value}() scalar value → text null the text in lower case текст в нижнем регистре takes the text coercion of any value, a structure by its output form берёт текстовое приведение любого значения, структуру — в её форме вывода sec:value-commands
title | title{value}() scalar value → text null the text with each word's first letter in upper case and the rest in lower текст, в котором первая буква каждого слова прописная, остальные строчные takes the text coercion of any value, a structure by its output form берёт текстовое приведение любого значения, структуру — в её форме вывода sec:value-commands
trim | trim{value}() scalar value → text null the text without leading and trailing whitespace текст без начальных и конечных пробельных символов takes the text coercion of any value, a structure by its output form берёт текстовое приведение любого значения, структуру — в её форме вывода sec:value-commands
ltrim | ltrim{value}() scalar value → text null the text without leading whitespace текст без начальных пробельных символов takes the text coercion of any value, a structure by its output form берёт текстовое приведение любого значения, структуру — в её форме вывода sec:value-commands
rtrim | rtrim{value}() scalar value → text null the text without trailing whitespace текст без конечных пробельных символов takes the text coercion of any value, a structure by its output form берёт текстовое приведение любого значения, структуру — в её форме вывода sec:value-commands
alpha | alpha{value}(keep?) scalar value → text null the letters of the text, every other character turned into a space буквы текста, каждый прочий символ заменён пробелом keep names extra characters to keep, alpha("’") for apostrophes; a class, not a parser keep называет дополнительные символы, которые сохраняются, alpha("’") для апострофов; это класс, а не парсер sec:value-commands
digit | digit{value}(keep?) scalar value → text null the digits of the text, every other character turned into a space цифры текста, каждый прочий символ заменён пробелом digit(".,-") keeps decimals and signs; the kept text becomes a number by the numeric coercion digit(".,-") сохраняет десятичные знаки и знаки чисел; сохранённый текст становится числом через числовое приведение sec:value-commands
alnum | alnum{value}(keep?) scalar value → text null the letters and digits of the text, every other character turned into a space буквы и цифры текста, каждый прочий символ заменён пробелом alnum("-") keeps hyphenated words alnum("-") сохраняет слова через дефис sec:value-commands
cc | cc{value}() scalar value → int null the count of codepoints число кодовых точек takes the text coercion of any value, a structure by its output form берёт текстовое приведение любого значения, структуру — в её форме вывода sec:value-commands
gc | gc{value}() scalar value → int null the count of grapheme clusters (UAX #29), what the eye counts число графемных кластеров (UAX #29), то, что считает глаз takes the text coercion of any value, a structure by its output form берёт текстовое приведение любого значения, структуру — в её форме вывода sec:value-commands
bc | bc{value}() scalar value → int null the count of UTF-8 bytes число байтов UTF-8 takes the text coercion of any value, a structure by its output form берёт текстовое приведение любого значения, структуру — в её форме вывода sec:value-commands
wc | wc{value}() scalar value → int null the count of words число слов takes the text coercion of any value, a structure by its output form берёт текстовое приведение любого значения, структуру — в её форме вывода sec:value-commands
lc | lc{value}() scalar value → int null the count of lines число строк takes the text coercion of any value, a structure by its output form берёт текстовое приведение любого значения, структуру — в её форме вывода sec:value-commands
sc | sc{value}() scalar value → int null the count of sentences (UAX #29) число предложений (UAX #29) takes the text coercion of any value, a structure by its output form берёт текстовое приведение любого значения, структуру — в её форме вывода sec:value-commands
lines | lines{text}() scalar text → text… no thread the lines of the text, one thread each строки текста, по нити на каждую expands: the thread forks once per line разветвляет: нить расходится по одной на строку sec:value-commands
words | words{text}() scalar text → text… no thread the whitespace-separated words of the text, one thread each слова текста, разделённые пробельными символами, по нити на каждое expands; | lower | alpha | words is a tokenizer разветвляет; | lower | alpha | words — токенизатор sec:value-commands
sentences | sentences{text}() scalar text → text… no thread the sentences of the text (UAX #29), one thread each, under the session's sentence bonds предложения текста (UAX #29), по нити на каждое, с учётом связок предложений сессии expands; segments trimmed, empties dropped; abbreviations need a bond file (--desm) разветвляет; сегменты обрезаны, пустые отброшены; сокращениям нужен файл связок (--desm) sec:value-commands
ngrams | @| ngrams{text}(n?) both text → text…; list(T) → list(text) no thread the n-word windows of the text joined by one space, one thread each; as an aggregate, the adjacent n-windows of the stream, full windows only окна по n слов текста, соединённые одним пробелом, по нити на каждое; как агрегат — соседние окна по n элементам потока, только полные n defaults to 2; a text shorter than n yields nothing; a window never straddles two values of a spread n по умолчанию 2; текст короче n не даёт ничего; окно никогда не пересекает два значения спреда sec:value-commands
tokens | tokens{text}(class?) scalar text → text… no thread the corpus reading's tokens of the text, one thread each: words, numbers and punctuation alike токены корпусного прочтения, по нити на каждый: слова, числа и пунктуация равно expands; tokens(word), tokens(number), tokens(punct) keep one class; the tokenizer a corpus mount uses разветвляет; tokens(word), tokens(number), tokens(punct) оставляют один класс; тот же токенизатор, что у монтирования corpus sec:value-commands
levenshtein | levenshtein{text}(other) scalar text, text → int null the edit distance to the argument, in codepoints: insertions, deletions and substitutions at one each расстояние редактирования до аргумента, в кодовых точках: вставки, удаления и замены по единице a null topic or a null other gives null null в топике или в other даёт null sec:value-commands
jaro_winkler | jaro_winkler{text}(other) scalar text, text → float null the Jaro–Winkler similarity to the argument, from 0 to 1, with the standard prefix bonus сходство Джаро — Винклера с аргументом, от 0 до 1, со стандартной премией за префикс a null other gives null; the measure of record linkage for names null в качестве other даёт null; мера связывания записей для имён sec:value-commands
casefold | casefold{value}() scalar value → text null Unicode case folding, the full mapping where lower is the simple one: Straße becomes strasse, a final sigma folds свёртка регистра Unicode, полное отображение там, где lower — простое: Straße становится strasse, конечная сигма сворачивается takes the text coercion of any value, a structure by its output form берёт текстовое приведение любого значения, структуру — в её форме вывода sec:value-commands
deaccent | deaccent{value}(lang?) scalar value → text null the text without the marks a language counts as accents, its letters kept; bare, every combining mark removed (= strip) текст без знаков, которые язык считает акцентами, буквы сохранены; без аргумента — без всех комбинируемых знаков (= strip) refused for a language without an accent table отвергается для языка без таблицы акцентов sec:script-commands
strip | strip{value}() scalar value → text null the text without any combining mark текст без всех комбинируемых знаков takes the text coercion of any value, a structure by its output form берёт текстовое приведение любого значения, структуру — в её форме вывода sec:script-commands
stem | stem{text}(lang) scalar text → text null the Snowball stem of each word of the text under the named language: running quickly becomes run quick основа Snowball каждого слова текста под названным языком: running quickly становится run quick refused for a language the stemmer lacks, naming the eighteen it ships; casefold comes before it отвергается для языка, которого нет у стеммера, с перечнем восемнадцати поставляемых; casefold идёт перед ним sec:value-commands
s | s/pattern/replacement/mods scalar value → text null regex substitution: the first occurrence, g every one; the mods g i m s x as in the pattern literal; $1 captures in the replacement подстановка по регулярному выражению: первое вхождение, g — все; модификаторы g i m s x как в литерале шаблона; захваты $1 в замене takes the text coercion of any value, a structure by its output form берёт текстовое приведение любого значения, структуру — в её форме вывода sec:value-commands
split | split{text}(sep?) scalar text → text… no thread the pieces between a separator, whitespace unless given, one thread each куски между разделителями, пробельными по умолчанию, по нити на каждый expands разветвляет sec:value-commands
substr | substr{text}(range) scalar text → text null the codepoints of a 1-based inclusive range, negative counting from the end; a bare position one character кодовые точки диапазона с отсчётом от 1 включительно, отрицательные — от конца; одна позиция — один символ out of range clamps, a crossed range is empty; 0 refuses, it is no position выход за границы обрезается, перекрёстный диапазон пуст; 0 отвергается, это не позиция sec:value-commands
pad | pad{text}(n; fill?) scalar text → text null the text padded to n grapheme cells, centered, with spaces or the fill text repeated and cut to fit текст, дополненный до n графемных ячеек, по центру, пробелами или текстом fill, повторённым и обрезанным по месту text already wide enough passes untouched; the odd extra cell falls right достаточно широкий текст проходит нетронутым; лишняя нечётная ячейка уходит вправо sec:value-commands
lpad | lpad{text}(n; fill?) scalar text → text null the text padded on the left to n grapheme cells текст, дополненный слева до n графемных ячеек lpad(n; "0") is the SQL shape; wide enough text passes untouched lpad(n; "0") — форма SQL; достаточно широкий текст проходит нетронутым sec:value-commands
rpad | rpad{text}(n; fill?) scalar text → text null the text padded on the right to n grapheme cells текст, дополненный справа до n графемных ячеек wide enough text passes untouched достаточно широкий текст проходит нетронутым sec:value-commands
repeat | repeat{text}(n) scalar text → text null the text n times, 0 the empty string текст n раз, 0 — пустая строка a negative n is null; "a" * 3 stays arithmetic, never concatenation отрицательное n даёт null; "a" * 3 остаётся арифметикой, а не конкатенацией sec:value-commands
indent | indent{text}(n; unit?) scalar text → text null every line of the text behind n copies of two spaces, or of the unit каждая строка текста за n копиями двух пробелов или заданной единицы a null or negative n indents by nothing null или отрицательное n не делает отступа sec:value-commands
default | default{value}(v) scalar value → value v the argument where the topic is null, else the topic unchanged аргумент там, где топик null, иначе топик без изменений the expression form of the null-default operator a ?? b форма команды для оператора null-умолчания a ?? b sec:value-commands
round | round{number}(places?) scalar number → int; number → float with d; quantity(D) → quantity(D) null the number rounded to an integer, or to d decimal places (negative d reaching left of the point), a quantity rounded in its written unit число, округлённое до целого или до d десятичных знаков (отрицательное d — влево от запятой), величина — в её записанной единице round(d) answers a float, round(0) included; the sanctioned finisher for presenting float arithmetic; a value with no numeric coercion is answered unchanged, wherever it stands, a cell of a table, a field of a record, an item of a list or the topic itself round(d) отвечает float, включая round(0); узаконенный финишёр для показа арифметики с плавающей точкой; значение без числового приведения отвечается без изменений, где бы оно ни стояло: ячейка таблицы, поле записи, элемент списка или сам топик sec:value-commands
floor | floor{number}() scalar number → int null the number rounded down число, округлённое вниз over the numeric coercion of the topic; a value with no numeric coercion is answered unchanged, a cell, a field or an item among them над числовым приведением топика; значение без числового приведения отвечается без изменений, в том числе ячейка, поле или элемент sec:value-commands
ceil | ceil{number}() scalar number → int null the number rounded up число, округлённое вверх over the numeric coercion of the topic; a value with no numeric coercion is answered unchanged, a cell, a field or an item among them над числовым приведением топика; значение без числового приведения отвечается без изменений, в том числе ячейка, поле или элемент sec:value-commands
abs | abs{number}() scalar number → number; quantity(D) → quantity(D) null the absolute value, a quantity's in its written unit модуль числа, у величины — в её записанной единице over the numeric coercion of the topic; a value with no numeric coercion is answered unchanged, a cell, a field or an item among them над числовым приведением топика; значение без числового приведения отвечается без изменений, в том числе ячейка, поле или элемент sec:value-commands
log | log{number}(base?) scalar number → float null the natural logarithm, or to the base b натуральный логарифм или по основанию b a non-positive argument is null; the expression form takes the operand first неположительный аргумент даёт null; форма выражения берёт операнд первым sec:value-commands
log2 | log2{number}() scalar number → float null the binary logarithm двоичный логарифм a non-positive argument is null неположительный аргумент даёт null sec:value-commands
log10 | log10{number}() scalar number → float null the decimal logarithm десятичный логарифм a non-positive argument is null неположительный аргумент даёт null sec:value-commands
exp | exp{number}() scalar number → float null e to the power of the number e в степени числа an overflow is null переполнение даёт null sec:value-commands
sqrt | sqrt{number}() scalar number → float null the square root квадратный корень a negative argument is null отрицательный аргумент даёт null sec:value-commands
pow | pow{number}(y) scalar number, number → number null the number to the power y: an integer raised to a non-negative integer stays an integer while it fits, else a float число в степени y: целое в неотрицательной целой степени остаётся целым, пока помещается, иначе float an overflow is null переполнение даёт null sec:value-commands
loglik | loglik{a}(n_a; b; n_b) scalar int, int, int, int → float null Dunning's log-likelihood keyness G² of a word seen a times in n_a tokens against b times in n_b, signed positive where the first corpus over-represents it кейнесс G² Даннинга для слова, встреченного a раз на n_a токенов против b раз на n_b, со знаком плюс там, где первый корпус его переупотребляет on the pipe the topic is a; a count above its total, an empty corpus or a word absent from both is null на пайпе топик — a; счёт выше своего итога, пустой корпус или слово, отсутствующее в обоих, дают null sec:value-commands
chi2 | chi2{a}(n_a; b; n_b) scalar int, int, int, int → float null Pearson's χ² keyness on the same 2×2 table as loglik, signed the same way кейнесс χ² Пирсона на той же таблице 2×2, что у loglik, с тем же знаком as loglik как loglik sec:value-commands
mi | mi{f_xy}(f_x; f_y; n) scalar int, int, int, int → float null pointwise mutual information of a pair seen f_xy times whose words are seen f_x and f_y times in n tokens поточечная взаимная информация пары, встреченной f_xy раз, слова которой встречены f_x и f_y раз на n токенов on the pipe the topic is f_xy; a zero count or size, or a pair seen more often than one of its words, is null на пайпе топик — f_xy; нулевой счёт или размер, или пара чаще одного из своих слов, дают null sec:value-commands
t_score | t_score{f_xy}(f_x; f_y; n) scalar int, int, int, int → float null the t-score of a collocation t-оценка коллокации as mi; tscore is the same command как mi; tscore — та же команда sec:value-commands
tscore | tscore{f_xy}(f_x; f_y; n) scalar int, int, int, int → float null alias of t_score: t_score, the same command without the underscore псевдоним t_score: t_score, та же команда без подчёркивания sec:value-commands
log_dice | log_dice{f_xy}(f_x; f_y) scalar int, int, int → float null logDice of a collocation, 14 + log₂(2f_xy / (f_x + f_y)), at most 14, needing no corpus size logDice коллокации, 14 + log₂(2f_xy / (f_x + f_y)), не больше 14, без размера корпуса as mi; logdice is the same command как mi; logdice — та же команда sec:value-commands
logdice | logdice{f_xy}(f_x; f_y) scalar int, int, int → float null alias of log_dice: log_dice, the same command without the underscore псевдоним log_dice: log_dice, та же команда без подчёркивания sec:value-commands
dice | dice{f_xy}(f_x; f_y) scalar int, int, int → float null the Dice coefficient of a collocation, 2f_xy / (f_x + f_y), from 0 to 1 коэффициент Дайса коллокации, 2f_xy / (f_x + f_y), от 0 до 1 as mi как mi sec:value-commands
haversine | haversine{lat1}(lon1; lat2; lon2) scalar number, number, number, number → float null the great-circle distance between two points in kilometres, on a sphere of 6371 km расстояние по дуге большого круга между двумя точками в километрах, на сфере 6371 км on the pipe the topic is the first latitude; a missing coordinate is null на пайпе топик — первая широта; отсутствующая координата даёт null sec:value-commands
nfc | nfc{value}() scalar value → text null the text in Unicode normalization form C текст в форме нормализации Unicode C composes what has a letter (и + U+0306 becomes й); a stressed Cyrillic vowel keeps its two codepoints составляет то, у чего есть буква (и + U+0306 становится й); ударная кириллическая гласная сохраняет две кодовые точки sec:value-commands
nfd | nfd{value}() scalar value → text null the text in Unicode normalization form D текст в форме нормализации Unicode D sec:value-commands
vowels | vowels{text}(alphabet?) scalar text → int null the count of vowel letters of the word, Cyrillic and Latin, case-folded число гласных букв слова, кириллических и латинских, без учёта регистра the argument names the vowel alphabet аргумент называет алфавит гласных sec:value-commands
stress | stress{text}(n; alphabet?) scalar text → text null the word with the acute (U+0301) after its n-th vowel, 1-based, negative from the end слово с акутом (U+0301) после n-й гласной, отсчёт от 1, отрицательные — от конца a word with fewer vowels is null; 0 refuses; a marked vowel stays; ё counts and is never marked слово с меньшим числом гласных даёт null; 0 отвергается; уже помеченная гласная остаётся; ё считается и не помечается sec:value-commands
stress_at | stress_at{text}() scalar text → int null the ordinal of the stressed vowel read back from a marked form: the vowel before the acute, else a ё, else the one vowel of a monosyllable порядковый номер ударной гласной, прочитанный из помеченной формы: гласная перед акутом, иначе ё, иначе единственная гласная односложного слова null when nothing decides null, когда ничто не решает sec:value-commands
unstress | unstress{text}() scalar text → text null the word without the acute and the grave слово без акута и грависа sec:value-commands
accent | accent{text}(style) scalar text → text null a marked form rendered in a display convention: "acute" (as stored), "upper" (the stressed vowel in capitals, замОк), "apostrophe" (замо'к), "none" помеченная форма в условном показе: "acute" (как хранится), "upper" (ударная гласная прописной, замОк), "apostrophe" (замо'к), "none" the data keeps the acute; display is a function of it; an unknown style is refused naming the four данные хранят акут; показ — функция от него; неизвестный стиль отвергается с перечнем четырёх sec:value-commands
translit | translit{value}(table?) scalar value → text null the text transliterated under a named table, the script's ISO table by default текст, транслитерированный по названной таблице, по умолчанию — таблица ISO для письменности refused for an unknown table, naming the tables; the tables and their standards in the Transliteration appendix отвергается для неизвестной таблицы с перечнем таблиц; таблицы и их стандарты — в приложении о транслитерации sec:script-commands
modernize | modernize{value}(table) scalar value → text null a historical spelling folded to the modern one, letter by letter, case kept: ru-1918 (the pre-reform Russian alphabet) and long-s (early-modern Latin typography) историческое написание, сведённое к современному побуквенно, с сохранением регистра: ru-1918 (дореформенная русская азбука) и long-s (раннее новоевропейское латинское письмо) typography, not orthography; an unknown table refuses типографика, а не орфография; неизвестная таблица отвергается sec:value-commands
sha256 | sha256{value}() scalar value → text null the SHA-256 digest of the text's UTF-8 bytes, as lowercase hex дайджест SHA-256 байтов UTF-8 текста, строчным hex one-way: decode(sha256) is a parse error односторонний: decode(sha256) — ошибка разбора sec:value-commands
base64 | base64{value}() scalar value → text null the text's bytes in base64, padded (RFC 4648) байты текста в base64 с дополнением (RFC 4648) sec:value-commands
base64url | base64url{value}() scalar value → text null the text's bytes in URL-safe base64, unpadded, the JWT convention байты текста в URL-безопасном base64 без дополнения, по соглашению JWT sec:value-commands
base32 | base32{value}() scalar value → text null the text's bytes in base32, padded (RFC 4648) байты текста в base32 с дополнением (RFC 4648) sec:value-commands
crockford32 | crockford32{value}() scalar value → text null the text's bytes in Crockford's base32, the transcription-safe alphabet without I, L, O, U, unpadded байты текста в base32 Крокфорда, алфавите без I, L, O, U, безопасном для переписывания, без дополнения sec:value-commands
hex | hex{value}() scalar value → text null the text's bytes in hexadecimal байты текста в шестнадцатеричной записи sec:value-commands
decode | decode{text}(scheme) scalar text → text with a scheme; text → value with a format null the text decoded from base64, base64url, base32, crockford32 or hex, each lenient; or parsed from json, yaml, toml or xml into a value текст, декодированный из base64, base64url, base32, crockford32 или hex, каждый снисходительно; или разобранный из json, yaml, toml или xml в значение malformed input, or bytes that are not UTF-8, is null; a JSON object becomes a record, an array a list; decode(sha256) is a parse error; the value composes with the spread and $| испорченный вход или байты не в UTF-8 дают null; объект JSON становится записью, массив — списком; decode(sha256) — ошибка разбора; значение сочетается со спредом и $| sec:value-commands
dec | dec{text}(scheme) scalar text → text null alias of decode: decode, the short name псевдоним decode: decode, короткое имя sec:value-commands
quantity | quantity{text}() scalar text → quantity(D) null the unit text read as a quantity, the cast of the quantity coercion текст с единицей, прочитанный как величина, — приведение-каст для величин text that is no quantity is null; a quantity passes through текст, не являющийся величиной, даёт null; величина проходит как есть sec:quantity-commands
convert | convert{quantity}(U) scalar quantity(D) → quantity(D) null the quantity re-expressed in the compatible unit U, the base magnitude untouched величина, перевыраженная в совместимой единице U, базовая магнитуда не тронута a dimension mismatch or a non-quantity topic is null; an unknown U is refused naming the nearest units; an opaque factor must be the same on both sides несовпадение размерности или топик-невеличина дают null; неизвестная U отвергается с указанием ближайших единиц; непрозрачный множитель должен совпадать по обе стороны sec:quantity-commands
unit | unit{quantity}(U?) scalar quantity → text; number → quantity with U; quantity → quantity with U null bare, the written unit of the quantity as unit text; with U, a number given the unit, a quantity converted to it без аргумента — записанная единица величины как текст единицы; с U — число, получившее единицу, или величина, преобразованная в неё a bare number has no unit, null; an unknown U is refused as in convert у голого числа единицы нет, null; неизвестная U отвергается, как в convert sec:quantity-commands
magnitude | magnitude{quantity}(U?) scalar quantity → number null the number of the quantity in its written unit, or in U число величины в её записанной единице или в U a non-quantity is null; an unknown U is refused as in convert невеличина даёт null; неизвестная U отвергается, как в convert sec:quantity-commands
scale | scale{quantity}(--binary) scalar quantity(D) → quantity(D) null the quantity in the thousand-step prefix of its unit that brings the magnitude to one or above: 1400000_B is 1.4_MB; a duration walks s, min, h, d величина в тысячном префиксе своей единицы, при котором магнитуда не меньше единицы: 1400000_B — это 1.4_MB; длительность идёт по лестнице s, min, h, d display-only; a unit that takes no prefix stays; scale(--binary) steps the binary prefixes of information только для показа; единица без префиксов остаётся; scale(--binary) идёт по двоичным префиксам информации sec:quantity-commands
exchange | exchange{quantity}(RATES; TARGET?) scalar quantity, record → quantity null the currency conversion by a rates record whose keys are currencies and values quantities in another: %(EUR = 1.23 USD); direct entry first, inverse second, the shortest chain last обмен валюты по записи курсов, ключи которой — валюты, а значения — величины в другой: %(EUR = 1.23 USD); сначала прямая запись, затем обратная, затем кратчайшая цепочка a record of several entries needs TARGET or is refused; a topic without exactly one named factor, or a rate the record does not reach, is null; nothing is looked up elsewhere запись из нескольких статей требует TARGET, иначе отвергается; топик без ровно одного названного множителя или недостижимый курс дают null; ничего не ищется снаружи sec:quantity-commands
dfmt | dfmt{duration}(LOCALE?; --iso) scalar duration → text null the duration as mixed span text, 1h 30min, in a locale's designations, or ISO 8601 with --iso длительность как смешанный интервал, 1h 30min, в обозначениях локали или ISO 8601 при --iso a non-duration is null недлительность даёт null sec:quantity-commands
dimension | dimension{quantity}() scalar quantity → text; table → list(text) null the dimension of the quantity over the base dimensions: L/T for a speed, EUR/M for a price per mass, 1 for a ratio размерность величины над базовыми размерностями: L/T для скорости, EUR/M для цены за массу, 1 для отношения a non-quantity is null; on a table one entry per column in header order невеличина даёт null; на таблице по записи на колонку в порядке заголовка sec:quantity-commands
@ | @| | @ / @| @ both record(list) → record…; opaque → record…; list(T) → list(record) no thread the row reading: a record of lists as one record per position, a library value as its rows чтение по строкам: запись списков как по записи на позицию, библиотечное значение — как его строки the bare constructor reading stdin (not a command); written spaced before another pipe, | @ | …; rows is its name голый конструктор, читающий stdin (не команда); перед следующим пайпом пишется через пробел, | @ | …; rows — её имя sec:tables-reshapes
% | @| | % / @| % both list(record) → record(list); opaque → record(list) null the column reading: a list of records as one record of lists keyed by field, a library value as its columns чтение по колонкам: список записей как одна запись списков по полям, библиотечное значение — как его колонки the bare constructor reading stdin (not a command); null where a record lacks the field; columns is its name; on an indexed table a record of records keyed by label; the constructor's %(--keys=T; --values=T) declares every key and value, and a key written with a trait, %(price<float> = …), declares its field голый конструктор, читающий stdin (не команда); null там, где у записи нет поля; columns — её имя; на индексированной таблице — запись записей с ключами-метками; %(--keys=T; --values=T) в конструкторе объявляет все ключи и значения, а ключ с трейтом, %(price<float> = …), объявляет своё поле sec:tables-reshapes
# | @| | # / @| # / #(--width=n) / #(--header=@(:a<int>; :b)) / #(--index=:col) / #(-i=(:a; :b)) both list → table; list(record) → table; list(node) → table; list(list) → table; record(list) → table null the table reading: a list of records as a frame, a list of lists as an array, a list of values as a sample, a record of lists (the column view) as the frame with a column per field, a scalar field repeated down the rows and a declared key a declared column; the stream built into one table чтение как таблица: список записей — фрейм, список списков — массив, список значений — выборка, запись списков (столбцовое представление) — фрейм по столбцу на поле, скалярное поле повторяется по строкам, объявленный ключ — объявленный столбец; поток, собранный в одну таблицу the bare constructor reading stdin (not a command); options stand alone in the parenthesis, never beside an item: --width=n (-w=n) lays the items in rows of n, --header=list (-h) names the columns, undeclared; --header=@(:a<int>; :b<*>) names and declares them, every cell of a declared column cast to its type (a cell that does not cast refuses naming the column and the first offending row; a declared column the data lacks refuses; <*> declares nothing and an inferred type reported beside it is no request; undeclared columns are inferred; the header's order is the column order); on an existing table | #(--header=h) is the columns the header names, cast as declared, which is t:#(h...); --index=:col (-i) names the index, a typed projector declaring it (-i=:a<int>); a header carries a name as the option --name=word beside --header, read back by :::name and swapped with the axes by transpose; the frame's header is the union of the fields in first-seen order; nodes give the records of their properties голый конструктор, читающий stdin (не команда); опции стоят в скобках одни, без элементов рядом: --width=n (-w=n) кладёт элементы строками по n, --header=list (-h) именует столбцы, необъявленные; --header=@(:a<int>; :b<*>) именует и объявляет их: каждая ячейка объявленного столбца приводится к его типу (ячейка, которая не приводится, отказывает, называя столбец и первую такую строку; объявленный столбец, которого нет в данных, отказывает; <*> ничего не объявляет, а выведенный тип рядом с ней — отчёт, не запрос; необъявленные столбцы выводятся; порядок заголовка — порядок столбцов); на существующей таблице | #(--header=h) — столбцы, названные заголовком, приведённые как объявлено, то есть t:#(h...); --index=:col (-i) именует индекс, типизированный проектор объявляет его (-i=:a<int>); у заголовка есть имя — опция --name=word рядом с --header, которую читает :::name, а transpose меняет вместе с осями; форма записи для заголовка ОТОЗВАНА в draft.166; заголовок фрейма — объединение полей в порядке первого появления; узлы дают записи своих свойств sec:tables-reshapes
rows | @| rows{table}() both as @ no thread the row reading of a table or a library value, the name of | @ чтение по строкам таблицы или библиотечного значения, имя для | @ sec:tables-reshapes
columns | @| columns{table}() both as % null the column reading of a table or a library value, the name of | % чтение по колонкам таблицы или библиотечного значения, имя для | % sec:tables-reshapes
header | @| header{table}() both table → list(projector); record → list(projector); list(record) → list(projector) null a table's header as typed projectors, @(:A<int>; :B<*; float>): a declared column with its type, an undeclared one with the star and the inferred type (the word type answers); on a record its fields likewise; on a list of records the union of their names in order of first appearance, undeclared, with the least coercible type of each; keys answers the names alone, type the types alone заголовок таблицы типизированными проекторами, @(:A<int>; :B<*; float>): объявленный столбец со своим типом, необъявленный — со звёздочкой и выведенным типом (словом, которым отвечает type); на записи так же её поля; на списке записей объединение имён в порядке первого появления, необъявленных, с наименьшим приводимым типом каждого; одни имена отвечает keys, одни типы — type the list is a structured projector: t:::header | .h then t2:#($.h...) narrows and casts another table to it (t2:$.h is the list of its cast columns, as the sigil says), and #(--header=(t | header)) builds one declared as t is; by position on a headerless table, @(:1<int>; :2<text>); :::header is the projection form on a record or a table список — структурный проектор: t:::header | .h, затем t2:#($.h...) сужает и приводит к нему другую таблицу (t2:$.h — список её приведённых столбцов, как велит сигил), а #(--header=(t | header)) строит таблицу, объявленную как t; по позициям на таблице без заголовка, @(:1<int>; :2<text>); :::header — форма проекции на записи или таблице; форма записи имена→типы ОТОЗВАНА в draft.166 sec:tables-reshapes
dim | @| dim{table}() both table → list(int) null a table's shape, @(rows; columns) форма таблицы, @(строк; колонок) :::dim is the projection form on a record or a table, :::nrows and :::ncols its two numbers :::dim — форма проекции на записи или таблице, :::nrows и :::ncols — его два числа sec:tables-reshapes
keys | @| keys{record}() both record → list; table → list(text); list(record) → list(list(text)) null a record's keys as a list, in order, typed as they are; a table's column names; on a list of records one list per record ключи записи списком, по порядку, какого они типа; имена столбцов таблицы; на списке записей — по списку на запись :::keys is the projection form on a record or a table :::keys — форма проекции на записи или таблице sec:tables-reshapes
fields | @| fields{record}() both record → list(projector); table → list(projector); node → list(projector); list(record) → list(projector) null the field projectors of the topic: a record's fields @(:a; :b), a table's columns @(:name; :age) (by position on a headerless table), a node's core fields as :fields has them; over a stream of records the union of their fields in first-seen order проекторы полей топика: поля записи @(:a; :b), столбцы таблицы @(:name; :age) (по позициям без заголовка), поля ядра узла, как их даёт :fields; над потоком записей — объединение их полей в порядке первого появления where keys and header answer the names as text, fields answers how to reach them; a projector prints as written (::title) and coerces to text as the bare key; :::fields is the projection form on a record or a table (on a node :fields) там, где keys и header отвечают именами как текстом, fields отвечает тем, как до них добраться; проектор печатается как пишется (::title) и приводится к тексту как голый ключ; :::fields — форма проекции на записи или таблице (на узле :fields) sec:tables-reshapes
nulls | @| nulls{stream}() reducing record → int; table → list(int); list(record) → list(int) 0 the count of a record's null fields; on a table one count per row; in a predicate over a table the row's count, so [nulls = 0] keeps the complete rows число пустых полей записи; на таблице по числу на строку; в предикате над таблицей — число у строки, так что [nulls = 0] оставляет полные строки dropna's forms as predicates: any null [nulls = 0], all null [nulls < n] with n the width, at least k values [nulls <= n - k] формы dropna как предикаты: хоть один null [nulls = 0], все null [nulls < n] при ширине n, не меньше k значений [nulls <= n - k] sec:tables-reshapes
map | map{table}(cmd; --to=target?) scalar table → table; list(T) → list; record → record; value → value null the body applied to every value one level deep, the cells of a table, the items of a list, the fields of a record, each the topic in turn, and the structure answered with the results in place; --to restricts it to a part named as the structure names its parts: a projector or a list of projectors for columns and fields, brackets for rows and items, a glued projection after them for the cells of one column ([..3]:A), --to=:::index the labels of an indexed table (map(flatten; --to=:::index) flattens a composite index to a tuple column, a record body nests it again, map(lower; --to=:::index) renames the labels) тело, применённое к каждому значению на одном уровне: к ячейкам таблицы, элементам списка, полям записи, каждое по очереди топик, и та же структура с результатами на местах; --to ограничивает его частью, названной так, как структура называет свои части: проектор или список проекторов для столбцов и полей, квадратные скобки для строк и элементов, слитная проекция за ними — ячейки одного столбца ([..3]:A), --to=:::index — метки индексированной таблицы (map(flatten; --to=:::index) сплющивает составной индекс в столбец-кортеж, тело-запись вкладывает снова, map(lower; --to=:::index) переименовывает метки) the argument is a command, read as if a pipe preceded it, the parentheses a subcontext with the cell as topic (map(+ 3) is lambda x: x + 3); it is a quarq written bare, q(+ 3), and a held one is spliced by the fragment sigil, map(&$.f), where map($.f) fills every cell with the regula's value: an operator first takes the cell as its left operand, $_ names it at any position (map(3 + $_)), a named command reads it as stdin with its operands (map(abs), map(round(3)) rounds every cell; the operand reading (3 | round) is never meant); the pipe may be written, map(| round(3)), the canonical form leaves it out; a declared column or field casts the results into its type and an undeclared column re-types; a trait as the body redeclares: map(<int>; --to=:D) declares and casts the column, map(<*>; --to=:D) undeclares it, no --to redeclares all, --to naming rows refuses; a cell that is a structure reaches the body as one value; on a scalar the body on that value; refused on a node аргумент — команда, прочитанная так, будто пайп ей предшествует, скобки — подконтекст с ячейкой-топиком (map(+ 3) — это lambda x: x + 3); это кварк, записанный на месте, q(+ 3), а хранимый вставляется сигилом фрагмента, map(&$.f), тогда как map($.f) заполняет каждую ячейку значением регистра: оператор в начале берёт ячейку левым операндом, $_ называет её в любой позиции (map(3 + $_)), именованная команда читает её как stdin со своими операндами (map(abs), map(round(3)) округляет каждую ячейку; операндное чтение (3 | round) никогда не имеется в виду); пайп можно написать, map(| round(3)), каноническая форма его опускает; объявленный столбец или поле приводит результаты к своему типу, необъявленный столбец типизируется заново; трейт телом переобъявляет: map(<int>; --to=:D) объявляет и приводит столбец, map(<*>; --to=:D) снимает объявление, без --to переобъявляются все, --to со строками отвергается; ячейка-структура достаётся телу одним значением; на скаляре — тело на этом значении; на узле отвергается sec:map-command
values | @| values{record}() both record → list; table → table; list(record) → list(list) null a record's values as a list, in order; a table's rows as a headerless table, columns and types kept значения записи списком, по порядку; строки таблицы как таблица без заголовка, с сохранением колонок и типов sec:tables-reshapes
flatten | @| flatten{list}(n?) both list → list; table → list; list(list) → list(T) unchanged every nested list opened to any depth, scalars and nulls kept in order; flatten(n) opens n levels; a table's cells row by row as one list каждый вложенный список раскрыт на любую глубину, скаляры и null сохранены по порядку; flatten(n) раскрывает n уровней; ячейки таблицы построчно одним списком a record is refused by kind; any other value passes through; over a stream of lists the items come one row each запись отвергается по роду; любое другое значение проходит как есть; над потоком списков элементы идут по одному на строку sec:tables-reshapes
type | @| type{value}() both value → text; table → list(text) "null" the type of the topic as one word: bool, int, float, text, null, instant, duration, period, quantity, list, record, table, projector, quarq, node for a node reference, or opaque; on a table one word per column тип топика одним словом: bool, int, float, text, null, instant, duration, period, quantity, list, record, table, projector, quarq, node для ссылки на узел или opaque; на таблице по слову на колонку :::type is the projection form on a record or a table :::type — форма проекции на записи или таблице sec:tables-reshapes
[] | @| | [n] / | [a..b] / | [n; m…] / | [@(…)] / | [[label]] / | [[a..b]] both table → record; table → table; list(T) → T; list(T) → list(T); record → value null a row of a table or an item of a list by position, a slice of them, or the listed positions, the index, range and position-list predicates read as commands; double brackets look up by label on an indexed table and by key on a record, [[x]], [[@(x; y)]] several labels, [[x; y]] the levels of a composite index, [[a..b]] both ends in строка таблицы или элемент списка по позиции, их срез или перечисленные позиции; индексный предикат, предикат диапазона и список позиций, прочитанные как команды; двойные скобки ищут по метке на индексированной таблице и по ключу на записи, [[x]], [[@(x; y)]] несколько меток, [[x; y]] уровни составного индекса, [[a..b]] с обоими концами on @| the positional selection of threads; a list value in the brackets, [$.pos], names positions too; glued on a table t[i; j] is the cell and a third coordinate is refused; a table with no index refuses [[x]] naming the option -i; a label several rows carry answers them as a table на @| — позиционный выбор нитей; список-значение в скобках, [$.pos], тоже называет позиции; слитно на таблице t[i; j] — ячейка, третья координата отвергается; таблица без индекса отвергает [[x]], называя опцию -i; метка нескольких строк отвечает ими как таблицей sec:tables-reshapes
cell | @| cell{table}(i; j) both table, int, int|text → value null one cell of a table: the row by position, the column by position or by name одна ячейка таблицы: строка по позиции, колонка по позиции или по имени sec:tables-reshapes
row-to-header | @| row-to-header{table}() both table → table null the first row lifted into the header первая строка, поднятая в заголовок sec:tables-reshapes
header-to-row | @| header-to-row{table}() both table → table null the header lowered into the first row, as text, the table then an array заголовок, опущенный в первую строку как текст; таблица становится массивом sec:tables-reshapes
describe | @| describe{stream}() reducing table → table; list(number) → record; record → record null the summary pandas prints: one row per statistic (count, mean, std, min, 25%, 50%, 75%, max) indexed by its name, one column per numeric column, the other columns and the index left out; on a list or a record of numbers the statistics as a record сводка, которую печатает pandas: по строке на статистику (count, mean, std, min, 25%, 50%, 75%, max) с индексом-именем, по столбцу на числовой столбец, остальные столбцы и индекс опущены; на списке или записи чисел — статистики записью std is the sample deviation; a null is skipped as missing and count is the non-null count; a table with no numeric column answers the empty table std — выборочное отклонение; null пропускается как отсутствующее, count — число ненулевых; таблица без числового столбца отвечает пустой таблицей sec:tables-reshapes
transpose | @| transpose{table}() both table → table; list(list) → table; record → table null rows and columns exchanged: a headerless table or a list of lists as a matrix (the cells coerced together to the least type all admit, text at the top); a frame as a frame whose first column, "column", holds the old header and whose other columns are the old rows numbered by position; a record of lists as that frame строки и столбцы переставлены: таблица без заголовка или список списков — как матрица (ячейки вместе приведены к наименьшему типу, который допускают все, текст наверху); фрейм — как фрейм, чей первый столбец «column» несёт прежний заголовок, а остальные — прежние строки по позициям; запись списков — как такой фрейм a ragged row is refused by position; | values | transpose is the matrix of a frame's cells alone; on an indexed table the index becomes the header and the header the index, levels and all, a tuple index as names joined with an underscore; the index columns made from the header's levels are named by the header's name, column, column2, … by depth where it has none, the old labels become header paths (bar:one), and the old index column's name becomes the header's name рваная строка отвергается с указанием позиции; | values | transpose — матрица одних ячеек фрейма; на индексированной таблице индекс становится заголовком, а заголовок — индексом, со всеми уровнями, индекс-кортеж — именами через подчёркивание sec:tables-reshapes
stack | stack{table}() scalar table → table null the innermost level of the header moved into the index: a frame becomes a one-column table indexed by label and column name (pandas stack) внутренний уровень заголовка переведён в индекс: фрейм становится таблицей одного столбца, индексированной меткой и именем столбца (stack в pandas) refused where the table has no index; melt with the index as id says the same in the long form; the new level is named variable and the column value отвергается там, где у таблицы нет индекса; melt с индексом как id говорит то же в длинной форме sec:tables-reshapes
unstack | unstack{table}() scalar table → table null the innermost level of the index moved into the header (pandas unstack); for one column the nested record t:A flattened by | # says the same внутренний уровень индекса переведён в заголовок (unstack в pandas); для одного столбца то же говорит вложенная запись t:A, сплющенная через | # refused where the index has no level to move; the new header names are the level's values, or column:value paths where several data columns stand отвергается там, где у индекса нет уровня для переноса sec:tables-reshapes
pivot | @| pivot{table}() / pivot{stream}(row; column; value) both list(record) → list(record); table → table null long to wide: one record per row key with a field per column key, both in order of first appearance, null in an unfilled cell из длинного в широкий: по записи на ключ строки с полем на ключ колонки, оба в порядке первого появления, null в незаполненной ячейке two values on one cell are refused, so a table aggregates before it pivots; without operands the first three fields serve by position два значения в одной ячейке отвергаются, так что таблица агрегируется до поворота; без операндов служат первые три поля по позиции sec:tables-reshapes
datetime | datetime{value}(LOCALE?) scalar value → instant null the instant: text parsed as ISO 8601 (its written offset kept), an instant passed through, the cast of the temporal coercion инстант: текст, разобранный как ISO 8601 (с сохранением записанного смещения), инстант как есть, каст темпорального приведения over the temporal coercion of the topic; a topic with no coercion is null над темпоральным приведением топика; топик без приведения даёт null sec:temporal-commands
epoch | epoch{instant}() scalar instant → int null the instant as seconds since the Unix epoch инстант в секундах от эпохи Unix over the temporal coercion of the topic; a topic with no coercion is null над темпоральным приведением топика; топик без приведения даёт null sec:temporal-commands
truncate | truncate{instant}(d) scalar instant → instant null the instant floored to the multiple of a fixed-length duration counted from the Unix epoch, in UTC: truncate(5_min), truncate(15_s), truncate(6_h), truncate(1_d) инстант, усечённый вниз до кратного длительности фиксированной длины, отсчитанной от эпохи Unix, в UTC: truncate(5_min), truncate(15_s), truncate(6_h), truncate(1_d) over the temporal coercion of the topic; d is a duration of seconds to weeks; a calendar period (1_mo, 1_y) refuses and points at period(GRAIN); at a unit grain the two agree над темпоральным приведением топика; d — длительность от секунд до недель; календарный период (1_mo, 1_y) отвергается с указанием на period(GRAIN); на единичной грануляции они совпадают sec:temporal-commands
isoformat | isoformat{instant}() scalar instant → text null the instant formatted in ISO 8601, UTC инстант в формате ISO 8601, UTC over the temporal coercion of the topic; a topic with no coercion is null над темпоральным приведением топика; топик без приведения даёт null sec:temporal-commands
year | year{instant}() scalar instant → int; period → int null the year, UTC, or as the calendar reading counts it in its era год, UTC, или как считает его календарное прочтение в своей эре over the temporal coercion of the topic; a topic with no coercion is null над темпоральным приведением топика; топик без приведения даёт null sec:temporal-commands
month | month{instant}(code?) scalar instant → int; instant → text with code null the month's ordinal in the year; month(code) the CLDR month code, M01 to M13 with L on a leap month порядковый номер месяца в году; month(code) — код месяца CLDR, от M01 до M13 с L у вставного месяца over the temporal coercion of the topic; a topic with no coercion is null над темпоральным приведением топика; топик без приведения даёт null sec:temporal-commands
day | day{instant}() scalar instant → int null the day of the month день месяца over the temporal coercion of the topic; a topic with no coercion is null над темпоральным приведением топика; топик без приведения даёт null sec:temporal-commands
hour | hour{instant}() scalar instant → int null the hour, UTC час, UTC over the temporal coercion of the topic; a topic with no coercion is null над темпоральным приведением топика; топик без приведения даёт null sec:temporal-commands
minute | minute{instant}() scalar instant → int null the minute минута over the temporal coercion of the topic; a topic with no coercion is null над темпоральным приведением топика; топик без приведения даёт null sec:temporal-commands
second | second{instant}() scalar instant → int null the second секунда over the temporal coercion of the topic; a topic with no coercion is null над темпоральным приведением топика; топик без приведения даёт null sec:temporal-commands
weekday | weekday{instant}() scalar instant → int null the ISO weekday, 1 = Monday, the same in every calendar день недели по ISO, 1 = понедельник, одинаков во всех календарях over the temporal coercion of the topic; a topic with no coercion is null над темпоральным приведением топика; топик без приведения даёт null sec:temporal-commands
date | date{instant}() scalar instant → instant null the instant truncated to its UTC day инстант, усечённый до своего дня по UTC over the temporal coercion of the topic; a topic with no coercion is null над темпоральным приведением топика; топик без приведения даёт null sec:temporal-commands
isodate | isodate{instant}() scalar instant → text null the calendar key yyyy-mm-dd календарный ключ yyyy-mm-dd over the temporal coercion of the topic; a topic with no coercion is null над темпоральным приведением топика; топик без приведения даёт null sec:temporal-commands
isomonth | isomonth{instant}() scalar instant → text null the calendar key yyyy-mm календарный ключ yyyy-mm over the temporal coercion of the topic; a topic with no coercion is null над темпоральным приведением топика; топик без приведения даёт null sec:temporal-commands
isoweek | isoweek{instant}() scalar instant → text null the calendar key {iso-year}-W{ww}, proper ISO week numbering календарный ключ {iso-год}-W{нн}, по нумерации недель ISO over the temporal coercion of the topic; a topic with no coercion is null над темпоральным приведением топика; топик без приведения даёт null sec:temporal-commands
seconds | seconds{number}() scalar number → duration; duration → number null over a number, that many seconds as a duration; over a duration, its length in seconds над числом — столько секунд как длительность; над длительностью — её длина в секундах the unit words work in both directions, decided by the topic's type слова-единицы работают в обе стороны, по типу топика sec:temporal-commands
minutes | minutes{number}() scalar number → duration; duration → number null minutes, constructing from a number or reading a duration минуты: построение из числа или чтение длительности as seconds как seconds sec:temporal-commands
hours | hours{number}() scalar number → duration; duration → number null hours, constructing from a number or reading a duration: (90 | minutes) | hours is 1.5 часы: построение из числа или чтение длительности: (90 | minutes) | hours — 1.5 as seconds как seconds sec:temporal-commands
days | days{number}() scalar number → duration; duration → number null days, constructing from a number or reading a duration: 30 | days is 30_d дни: построение из числа или чтение длительности: 30 | days — 30_d as seconds; the span between two instants is a number of days in one word как seconds; промежуток между двумя инстантами — число дней одним словом sec:temporal-commands
duration | duration{value}(--from=INSTANT? --to=INSTANT?) scalar value → duration; instant, instant → duration null bare, the cast of the durational coercion: unit text in a time unit, span text or an ISO 8601 duration; with --to=TO over an instant FROM, or --from=FROM over an instant TO, the duration TO less FROM, negative when TO precedes без аргументов — каст дурационного приведения: текст с единицей времени, текст промежутка или длительность ISO 8601; с --to=TO над инстантом FROM или с --from=FROM над инстантом TO — длительность TO минус FROM, отрицательная, когда TO раньше the slot is the other end, piped or at the head; both options at once are refused; an argument that does not coerce makes the result null; td is the short name слот — другой конец, по пайпу или в голове; обе опции разом отвергаются; аргумент без приведения даёт null; td — короткое имя sec:temporal-commands
td | td{value}(--from=INSTANT? --to=INSTANT?) scalar value → duration null alias of duration: duration, the short name (time duration) псевдоним duration: duration, короткое имя (time duration) sec:temporal-commands
strftime | strftime{instant}(fmt; LOCALE?; CALENDAR?) scalar instant → text null the instant written under a C/POSIX format, in its own offset, with English names unless a locale is named, in the Gregorian calendar unless one is named инстант, записанный по формату C/POSIX, в собственном смещении, с английскими названиями, если не назван локаль, по григорианскому календарю, если не назван другой a locale or calendar the implementation lacks is refused, naming the ones it carries; tfmt is the short name локаль или календарь, которых нет у реализации, отвергаются с перечнем имеющихся; tfmt — короткое имя sec:temporal-commands
tfmt | tfmt{instant}(fmt) scalar instant → text null alias of strftime: strftime, the short name псевдоним strftime: strftime, короткое имя sec:temporal-commands
strptime | strptime{text}(fmt; LOCALE?; CALENDAR?) scalar text → instant null the text parsed under the same format standard, strftime's inverse: a %z offset kept, no offset read as UTC, missing fields from the epoch текст, разобранный по тому же стандарту формата, обратное к strftime: смещение %z сохраняется, без смещения — UTC, отсутствующие поля — от эпохи a non-text topic, or text that does not match the format, is null; tp is the short name топик не-текст или текст, не подходящий под формат, дают null; tp — короткое имя sec:temporal-commands
tp | tp{text}(fmt; LOCALE?; CALENDAR?) scalar text → instant null alias of strptime: strptime, the short name (temporal parse) псевдоним strptime: strptime, короткое имя (temporal parse) an instant topic passes through unchanged, as under datetime, so a fragment that parses text runs over a date literal too топик-инстант проходит без изменений, как под datetime, так что фрагмент, разбирающий текст, работает и над литералом даты sec:temporal-commands
now expr now() function → instant the invocation instant, the same for the whole query инстант вызова, один на весь запрос an expression function, not a pipe command; the member of the tfmt / td / tp / now family функция выражения, не команда пайпа; член семейства tfmt / td / tp / now sec:temporal-commands not in the engine's command registry (an expression function)
calendar | calendar{instant}(NAME?) scalar instant → instant; period → period; instant → text bare null the instant or period read in a named calendar, year, month, day and the locale's rendering following; bare, the name of the reading, gregorian for a fresh instant инстант или период, прочитанный в названном календаре, за ним следуют year, month, day и показ локали; без аргумента — имя прочтения, gregorian для нового инстанта the CLDR calendars, gregorian julian hebrew islamic islamic-tabular persian coptic ethiopian buddhist indian roc japanese chinese dangi, named in any shipped language; another name is refused календари CLDR, gregorian julian hebrew islamic islamic-tabular persian coptic ethiopian buddhist indian roc japanese chinese dangi, называемые на любом поставляемом языке; иное имя отвергается sec:temporal-commands
era | era{instant}() scalar instant → text null the CLDR code of the era of the instant's calendar reading: ce, reiwa, ah код CLDR эры календарного прочтения инстанта: ce, reiwa, ah null where the calendar has no era null там, где у календаря нет эры sec:temporal-commands
period | period{value}(GRAIN?) scalar value → period null the cast of the calendar coercion: text at reduced precision at the grain written, an integer that year, an instant at its printing grain; period(GRAIN) the period of that grain holding the value каст календарного приведения: текст пониженной точности на записанной грануляции, целое — тот год, инстант — на грануляции печати; period(GRAIN) — период этой грануляции, содержащий значение the grains year month day hour minute second, in any shipped language; a grain finer than the value's own is null грануляции year month day hour minute second на любом поставляемом языке; грануляция тоньше собственной даёт null sec:temporal-commands
grain | grain{value}() scalar period → text null a period's grain as the English word грануляция периода английским словом null for any other value null для любого другого значения sec:temporal-commands
timex | timex{text}(LOCALE) scalar text → record… no thread the time expressions of the text, one record %(text; at; kind; value; grain) each, in the order of the text временные выражения текста, по записи %(text; at; kind; value; grain) на каждое, в порядке текста expands разветвляет sec:timeline
time_anchor | time_anchor{text}(T) scalar text → period null a time expression valued against the anchor T: '+P2M' | time_anchor(1899-10-06) is 1899-12-06 временное выражение, вычисленное относительно якоря T: '+P2M' | time_anchor(1899-10-06) — 1899-12-06 sec:timeline
timeline @| timeline{stream}(expr; anchor?; --forward) context list(record) → list(record) no thread the narrative point carried through the context: each time expression valued against the result before it, when and from added to its record нарративная точка, проносимая через контекст: каждое временное выражение вычислено относительно предыдущего результата, в запись добавлены when и from row-aligned; --forward reads the expressions forward from the anchor instead of backward построчно; --forward читает выражения вперёд от якоря, а не назад sec:timeline
window @| window{stream}(span; key?) context list(T) → list(list(T)) no thread each thread with its context neighbours at ordinal offsets within the span as members, its topic their list: window(-1..1) centered, window(..0) expanding, window(n) the trailing n каждая нить с соседями по контексту на порядковых смещениях в пределах span как членами, её топик — их список: window(-1..1) по центру, window(..0) нарастающее, window(n) — хвостовые n row-aligned and thread-preserving; partial at the edges; a trailing key partitions, a null key matches nothing построчно, с сохранением нитей; у краёв неполное; хвостовой ключ разбивает на части, null-ключ ничему не равен sec:windows
collapse @| collapse{stream}(-e|--edges) context list(node) → list(node) no thread one thread per distinct node among the context's threads, in order of first arrival: @- the union of their arriving edges, the capsa gathered, equal regulae once and differing ones as lists; collapse(-e) one thread per node and arriving edge по одной нити на различный узел среди нитей контекста, в порядке первого прибытия: @- — объединение их рёбер прибытия, капса собрана, равные регулы один раз, различные списком; collapse(-e) — по нити на узел и ребро прибытия thread-preserving by node: a walk's routes folded, so a reachability set is counted once per node; a collapse keeps navigation mode, a hop may follow it сохраняет нити по узлам: маршруты обхода сложены, так что множество достижимости считается по разу на узел; свёртка сохраняет режим навигации, за ней может следовать хоп sec:edge-accessor
edges @| edges{stream}(hop?; -w|--weight=UNIT?) context list(node) → table no thread the edges among the context's nodes as a table, the induced subgraph: source and target as node references, label, directed and the edge's properties; the operand the collecting hop, edges(->road), edges(--road), edges(~*), bare edges = edges(->*) рёбра между узлами контекста таблицей, порождённый подграф: source и target как ссылки на узлы, label, directed и свойства ребра; операнд — собирающий хоп, edges(->road), edges(--road), edges(~*), голое edges = edges(->*) --weight=UNIT adds a weight column with the edge property of the unit's dimension converted to it, --weight=::prop the property as it stands; the source and target cells are node references, so :source:.l reads an attached regula of the end; rows | ... spreads the rows into threads --weight=UNIT добавляет столбец weight со свойством ребра этой размерности, приведённым к ней, --weight=::prop — свойство как есть; ячейки source и target — ссылки на узлы, так что :source:.l читает прикреплённую к концу регулу; rows | ... разворачивает строки в нити par:edges-nodes
nodes @| nodes{stream}() context list(node) → table no thread the context's nodes as a table: node, name, kind, and the regulae attached to the nodes as further columns узлы контекста таблицей: node, name, kind и прикреплённые к узлам регулы дальнейшими столбцами the node column holds node references; a context with several threads at one node lists the node once per thread, collapse first for one row per node столбец node держит ссылки на узлы; контекст с несколькими нитями на одном узле перечисляет узел по разу на нить, сначала collapse — по строке на узел par:edges-nodes
pagerank graph @| graph:pagerank{context}(hop?; -d|--damping=x? -n|--rounds=n? -w|--weight=UNIT? --teleport=expr?) context list(node) → list(float) no thread each thread keeps its place and gets its node's PageRank over the induced subgraph of the context along the hop (->* when left out): damping 0.85, twenty rounds, the dangling mass spread evenly, self-loops ignored, a repeated edge once, the ranks summing to one каждая нить остаётся на месте и получает PageRank своего узла по порождённому подграфу контекста вдоль хопа (->*, если опущен): затухание 0.85, двадцать раундов, висячая масса поровну, петли игнорируются, повторное ребро один раз, ранги в сумме дают единицу row-aligned; the defaults are the web level's, so //page @| graph:pagerank(->link) equals ::pagerank; --weight=UNIT weights by the edge property of that dimension, --weight=::prop by the property as it stands, parallel edges adding theirs; --teleport is reserved for the personalised rank and refuses; a library command never pushes, | .:pr attaches the rank выровнен по строкам; значения по умолчанию — веб-уровня, так что //page @| graph:pagerank(->link) равно ::pagerank; --weight=UNIT взвешивает свойством ребра этой размерности, --weight=::prop — свойством как есть, параллельные рёбра складывают веса; --teleport зарезервирован за персонализированным рангом и отказывает; команда библиотеки никогда не кладёт, ранг прикрепляет | .:pr par:graph-library
distance graph @| graph:distance{context}(hop?; -f|--from=PATH -w|--weight=UNIT?) context list(node) → list(int) no thread each thread keeps its place and gets its node's shortest distance from the seeds along the hop (->* when left out), in hops, or in the unit or property given by --weight; null where no seed reaches каждая нить остаётся на месте и получает кратчайшее расстояние своего узла от затравок вдоль хопа (->*, если опущен), в хопах либо в единице или свойстве из --weight; null там, куда не доходит ни одна затравка row-aligned; --from is an anchored node operand (a path from the root, a mark, an id anchor), several seeds give the nearest, a seed outside the context counts for nothing; a negative weight refuses; with --weight=UNIT the distance is a quantity, with ::prop the property's sum выровнен по строкам; --from — якорный операнд-узел (путь от корня, метка, якорь идентификатора), несколько затравок дают ближайшую, затравка вне контекста не считается; отрицательный вес отказывает; с --weight=UNIT расстояние — количество, с ::prop — сумма свойства par:graph-library
kcore graph @| graph:kcore{context}(hop?) context list(node) → list(int) no thread each thread keeps its place and gets its node's core number, the largest k for which the node belongs to the subgraph where every node keeps at least k neighbours каждая нить остаётся на месте и получает ядровое число своего узла — наибольшее k, при котором узел принадлежит подграфу, где у каждого узла не меньше k соседей row-aligned; the degree counts distinct neighbours over the edges as named, either direction, so a directed and an undirected operand agree, a repeated edge once and a self-loop never; a node without neighbours reads 0; --weight refuses выровнен по строкам; степень считает различных соседей по рёбрам, как они названы, в любую сторону, так что направленный и ненаправленный операнд согласны, повторное ребро один раз, петля никогда; узел без соседей читает 0; --weight отказывает par:graph-library
betweenness graph @| graph:betweenness{context}(hop?; -N|--normalized -w|--weight=UNIT? -e|--edges) context list(node) → list(float) no thread each thread keeps its place and gets its node's betweenness centrality: over every pair of other nodes in the context, the share of the shortest paths between them along the hop (->* when left out) that pass through the node, a pair with several shortest paths dividing its unit among them каждая нить остаётся на месте и получает промежуточность своего узла: по всем парам других узлов контекста доля кратчайших путей между ними вдоль хопа (->*, если опущен), проходящих через узел, причём пара с несколькими кратчайшими путями делит свою единицу между ними row-aligned, Brandes over the induced subgraph; an undirected operand counts each pair once, a directed one each ordered pair; --normalized divides by the number of pairs, (n−1)(n−2)/2 or (n−1)(n−2), so the answer lies in 0..1; --weight=UNIT or ::prop makes the paths shortest by weight, a negative weight refuses; a node on no path between others reads 0; on a cycle the node across from a pair carries half of it; with --edges the command answers instead the edges table for the operand with a betweenness column, the share of the shortest paths that run along each edge, under the same --normalized and --weight выровнен по строкам, алгоритм Брандеса по порождённому подграфу; ненаправленный операнд считает каждую пару один раз, направленный — каждую упорядоченную пару; --normalized делит на число пар, (n−1)(n−2)/2 или (n−1)(n−2), так что ответ лежит в 0..1; --weight=UNIT или ::prop делает пути кратчайшими по весу, отрицательный вес отказывает; узел, не лежащий ни на одном пути между другими, читает 0; на цикле узел напротив пары несёт её половину; с --edges команда отвечает вместо этого таблицей рёбер для операнда со столбцом betweenness — долей кратчайших путей, проходящих по каждому ребру, при тех же --normalized и --weight par:graph-library
conncomp graph @| graph:conncomp{context}(hop?) context list(node) → list(int) no thread each thread keeps its place and gets its node's connected component as an integer, the components numbered from one in the order in which their first node stands in the context, along the hop (->* when left out) каждая нить остаётся на месте и получает компоненту связности своего узла целым числом; компоненты нумеруются с единицы в порядке, в котором их первый узел стоит в контексте, вдоль хопа (->*, если опущен) row-aligned; a directed operand gives the strongly connected components (Tarjan), an undirected one the connected components, so a weakly connected reading is the undirected operand; an edgeless node is a component of its own; --weight refuses выровнен по строкам; направленный операнд даёт сильно связные компоненты (алгоритм Тарьяна), ненаправленный — компоненты связности, так что слабая связность читается ненаправленным операндом; узел без рёбер — отдельная компонента; --weight отказывает par:graph-library
artpoints graph @| graph:artpoints{context}(hop?) context list(node) → list(bool) no thread each thread keeps its place and gets true where its node is an articulation point, a node whose removal disconnects the graph of the hop (->* when left out), false otherwise каждая нить остаётся на месте и получает true там, где её узел — точка сочленения, узел, удаление которого разрывает граф хопа (->*, если опущен), иначе false row-aligned, Tarjan's lowpoint pass; the edges are read without their direction, so a directed operand gives the points of the undirected graph; a repeated edge counts once and a self-loop never; a node without an edge reads false; --weight refuses выровнен по строкам, проход Тарьяна по lowpoint; рёбра читаются без направления, так что направленный операнд даёт точки ненаправленного графа; повторное ребро считается один раз, петля никогда; узел без рёбер читает false; --weight отказывает par:graph-library
bridges graph @| graph:bridges{context}(hop?) context list(node) → table no thread the edges table for the operand kept to the bridges, the edges whose removal disconnects the graph of the hop (->* when left out), answered once for the context таблица рёбер для операнда, оставленная лишь на мостах — рёбрах, удаление которых разрывает граф хопа (->*, если опущен), один ответ на контекст reducing; the columns are those of edges (source, target, label, directed, edge); read without direction as artpoints reads it, from the same pass; an empty table where no edge is a bridge; --weight refuses редуцирующий; столбцы те же, что у edges (source, target, label, directed, edge); читается без направления, как читает artpoints, тем же проходом; пустая таблица там, где мостов нет; --weight отказывает par:graph-library
route graph @| graph:route{context}(hop?; -f|--from=PATH -w|--weight=UNIT?) context list(node) → list(list(node)) no thread each thread keeps its place and gets its node's shortest route from the seeds along the hop (->* when left out) as a list of nodes in order, the seed first and the node itself last; null where no seed reaches каждая нить остаётся на месте и получает кратчайший маршрут своего узла от затравок вдоль хопа (->*, если опущен) списком узлов по порядку, затравка первой, сам узел последним; null там, куда не доходит ни одна затравка row-aligned; the seeds, the weights, the unreached node and the refusals are those of distance, the seed's own route the list of itself alone; where several routes are shortest the one whose predecessor stands first in document order is answered, step by step, so a node has one route; the route to one node is read by narrowing the context after the attaching push выровнен по строкам; затравки, веса, недостигнутый узел и отказы те же, что у distance, маршрут самой затравки — список из неё одной; где кратчайших маршрутов несколько, отвечается тот, чей предшественник стоит первым в порядке документа, шаг за шагом, так что у узла один маршрут; маршрут до одного узла читается сужением контекста после прикрепляющего пуша par:graph-library
closeness graph @| graph:closeness{context}(hop?; -H|--harmonic -w|--weight=UNIT?) context list(node) → list(float) no thread each thread keeps its place and gets its node's closeness centrality along the hop (->* when left out): with r the other nodes it reaches and n the context's nodes, r/(n−1) times r over the sum of its distances to them (Wasserman and Faust), in 0..1 каждая нить остаётся на месте и получает центральность близости своего узла вдоль хопа (->*, если опущен): при r достигаемых других узлах и n узлах контекста — r/(n−1), умноженное на r, делённое на сумму расстояний до них (Вассерман и Фауст), в 0..1 row-aligned; a node adjacent to every other reads 1, a node reaching none 0, a connected graph gives the inverse of the mean distance; --harmonic answers instead the sum of inverse distances over the other nodes divided by n−1, an unreached node adding nothing; distances as distance measures them, in hops or by --weight, in the hop's direction выровнен по строкам; узел, смежный со всеми, читает 1, узел, не достигающий никого, — 0, связный граф даёт обратную величину среднего расстояния; --harmonic отвечает вместо этого суммой обратных расстояний по другим узлам, делённой на n−1, недостигнутый узел ничего не добавляет; расстояния — как у distance, в хопах или по --weight, в направлении хопа par:graph-library
communities graph @| graph:communities{context}(hop?; -r|--resolution=x? -w|--weight=UNIT?) context list(node) → list(int) no thread each thread keeps its place and gets its node's community as an integer, the communities numbered from one in the order in which their first node stands in the context: the partition the Leiden algorithm reaches towards the modularity of the given resolution (1 unless given) along the hop (->* when left out) каждая нить остаётся на месте и получает сообщество своего узла целым числом; сообщества нумеруются с единицы в порядке, в котором их первый узел стоит в контексте: разбиение, к которому алгоритм Лейдена приходит к модулярности заданного разрешения (1, если не задано) вдоль хопа (->*, если опущен) row-aligned, Leiden from one node per community, nodes moved in document order and refined, a tie going to the earlier community; the edges are read without direction, a repeated edge adds its weight, --weight weighs them; the answer is that algorithm's partition, of high modularity and not the highest выровнен по строкам, алгоритм Лейдена от одного узла на сообщество, узлы перемещаются в порядке документа с уточнением, при ничьей — к более раннему сообществу; рёбра читаются без направления, повторное ребро складывает вес, --weight взвешивает их; ответ — разбиение этого алгоритма, высокой модулярности, но не наивысшей par:graph-library
modularity graph @| graph:modularity{context}(hop?; -b|--by=expr? -r|--resolution=x? -w|--weight=UNIT?) context list(node) → float no thread one float for the context: the modularity of Newman and Girvan of the partition the attached regula named by --by (:.c) gives, over the edges of the hop (->* when left out): the share of edges inside the parts less the share a random graph of the same degrees would place there, scaled by the resolution (1 unless given) одно число с плавающей точкой на контекст: модулярность Ньюмана и Гирван разбиения, которое задаёт прикреплённая регула из --by (:.c), по рёбрам хопа (->*, если опущен): доля рёбер внутри частей минус доля, которую положил бы туда случайный граф тех же степеней, умноженная на разрешение (1, если не задано) reducing; between −1/2 and 1; a directed operand takes the directed form of Leicht and Newman, an undirected one the original; parallel edges add, --weight weighs them; a node with nothing attached under the name is a part of its own; --by is required редуцирующий; от −1/2 до 1; направленный операнд берёт направленную форму Лейхта и Ньюмана, ненаправленный — исходную; параллельные рёбра складываются, --weight взвешивает их; узел, к которому под этим именем ничего не прикреплено, — отдельная часть; --by обязателен par:graph-library
triangles graph @| graph:triangles{context}(hop?; -c|--coefficient) context list(node) → list(int); list(node) → list(float) no thread each thread keeps its place and gets its node's triangles, the pairs of its neighbours along the hop (->* when left out) that are neighbours of each other; with --coefficient its local clustering coefficient instead, twice the triangles over the pairs of distinct neighbours каждая нить остаётся на месте и получает треугольники своего узла — пары его соседей вдоль хопа (->*, если опущен), которые соседи друг другу; с --coefficient — вместо этого его локальный коэффициент кластеризации, удвоенные треугольники, делённые на число пар различных соседей row-aligned; the edges are read without direction, a repeated edge once and a self-loop never; the coefficient (Watts and Strogatz) lies in 0..1 and reads 0 under two neighbours; the sum over three is the graph's triangle count; --weight refuses выровнен по строкам; рёбра читаются без направления, повторное ребро один раз, петля никогда; коэффициент (Уоттс и Строгац) лежит в 0..1 и читает 0 при менее чем двух соседях; сумма, делённая на три, — число треугольников графа; --weight отказывает par:graph-library
shift | @| shift{stream}(n; key?) context list(T) → list(T) no thread each thread's topic replaced by the effective topic of the thread n positions back, negative n looking forward, null past the edge топик каждой нити заменён действующим топиком нити на n позиций назад, отрицательное n смотрит вперёд, за краем null row-aligned; the lag of a difference idiom, | .now @| shift(1) | $.now - $_ построчно; лаг идиомы разности, | .now @| shift(1) | $.now - $_ sec:windows
zscore @| zscore{stream}(key?; -s|--sample) context list(number) → list(float) no thread each numeric topic replaced by its standard score over the context, or over its partition under a key; sample selects the n−1 spread каждый числовой топик заменён своей стандартной оценкой по контексту или по своей части под ключом; sample выбирает разброс по n−1 a topic with no numeric coercion, and every topic of a partition with no spread, is null топик без числового приведения и все топики части без разброса дают null sec:windows
number | @| number{text}(LOCALE?) / number{stream}(level?) both text → number; list(T) → list(text) null on the pipe the numeric cast under a locale's conventions, number(fr) reading 1 234,56; on @| the outline command, each row's dotted number 1, 1.1, 1.2, 2 from a level per row на пайпе — числовой каст по соглашениям локали, number(fr) читает 1 234,56; на @| — команда оглавления, нумерация каждой строки через точку 1, 1.1, 1.2, 2 по уровню строки text that does not parse under the locale is null; a locale without a table is refused; without an argument the value at hand is the level текст, не разбираемый под локалью, даёт null; локаль без таблицы отвергается; без аргумента уровнем служит само значение sec:windows
outline @| outline{stream}(level?; text?; -s|--style=STYLE?) context list(T) → list(text) no thread each row as the line of a table of contents, the text indented two spaces per level below the shallowest, numbered with --style="1."; bare, the fields depth and title of a record stream каждая строка как строка оглавления, текст с отступом в два пробела на уровень ниже самого мелкого, с номером при --style="1."; без аргументов — поля depth и title потока записей row-aligned; a skipped level counts once; a row without a level stands at the top построчно; пропущенный уровень считается один раз; строка без уровня стоит наверху sec:windows
group @| | group{stream}(key; key…) keyed list(T) → list(list(T)); list → list(list) no thread the context partitioned into one thread per distinct key value, the members under it, the topic their list; on the plain pipe the same over a list topic; the key is filed as a regula under the column's name, the name given (name = key) or the label ("label"; key) контекст, разбитый на нить по каждому различному значению ключа, члены под ней, топик — их список; на простом пайпе то же над топиком-списком; ключ записывается регулой под именем столбца, данным именем (name = key) или пометкой ("label"; key) several keys nest; a missing key does not compete несколько ключей вкладываются; отсутствующий ключ не участвует sec:keyed-aggregates
ungroup @| ungroup{stream}() context list(list(T)) → list(T) no thread the groups' members as the context again члены групп снова как контекст sec:keyed-aggregates
sort_by @| | sort_by{stream}(key; key…; -d|--desc) keyed list(T) → list(T); table → table no thread the threads sorted by per-thread keys, nodes and capsae preserved; --desc (-d) turns the whole order descending, a minus before a key, - ::fare or -:col, descends on that key alone key alone; a table's rows ranked as records, a table back нити, отсортированные по понитевым ключам, с сохранением узлов и капс; --desc (-d) обращает весь порядок в убывающий, минус перед ключом, - ::fare или -:col, обращает один этот ключ; строки таблицы ранжируются как записи, обратно таблица ties break by the next key; a missing key does not compete; sort_by(-:a; :b) is sort_by(:b) @| sort_by(:a; --desc) by stability; under --desc a minus-marked key ascends; the spaced - ::n is the negated number as a key; inside the parentheses -:col is the marker on a core field and an incoming crosslink key is written <-col ничьи разрешает следующий ключ; отсутствующий ключ не участвует; sort_by(-:a; :b) — это sort_by(:b) @| sort_by(:a; --desc) в силу устойчивости; под --desc ключ с минусом возрастает; раздельное - ::n — отрицательное число как ключ; внутри скобок -:col — маркер на поле ядра, а ключ-входящая ссылка пишется <-col sec:keyed-aggregates
unique_by @| | unique_by{stream}(key; key…) keyed list(T) → list(T); table → table no thread the first thread per distinct key первая нить на каждое различное значение ключа a table's rows ranked as records, a table back строки таблицы ранжируются как записи, обратно таблица sec:keyed-aggregates
min_by @| | min_by{stream}(key) keyed list(T) → T; table → table no thread every thread that ties for the least key каждая нить, делящая наименьший ключ a table's rows ranked as records, a table back строки таблицы ранжируются как записи, обратно таблица sec:keyed-aggregates
max_by @| | max_by{stream}(key) keyed list(T) → T; table → table no thread every thread that ties for the greatest key каждая нить, делящая наибольший ключ a table's rows ranked as records, a table back строки таблицы ранжируются как записи, обратно таблица sec:keyed-aggregates
top @| | top{stream}(n; key) keyed list(T) → list(T); table → table no thread the n threads with the greatest key, in key order n нитей с наибольшим ключом, в порядке ключа on the plain pipe per group, after @| group; without a group before it the query is refused; a table's rows ranked as records, a table back на простом пайпе — по группам, после @| group; без группировки перед ней запрос отвергается; строки таблицы ранжируются как записи, обратно таблица sec:keyed-aggregates
bottom @| | bottom{stream}(n; key) keyed list(T) → list(T); table → table no thread the n threads with the least key n нитей с наименьшим ключом as top; a table's rows ranked as records, a table back как top; строки таблицы ранжируются как записи, обратно таблица sec:keyed-aggregates
count @| | count{stream}(-v|--values -n|--nulls -o|--of=expr?) reducing list → int; record → int; table → int; scalar → 1 0 how many: the threads of the context, or the items of a list topic, nulls included сколько: нитей контекста или элементов топика-списка, включая null --values (-v) counts the values other than null, --nulls (-n) the nulls, bare count everything; --of=expr (-o=expr) names what to reduce in each member; a non-list topic counts as one; a scalar topic counts 1, so the length of a text is cc, its codepoints --values (-v) считает значения, кроме null, --nulls (-n) — null, голый count — всё; --of=expr (-o=expr) называет, что редуцировать у члена; топик не-список считается за один; скалярный топик считается за 1, так что длина текста — cc, её кодовые точки sec:aggregate-commands
sum @| | sum{stream}(-o|--of=expr?) reducing list(number) → number; list(quantity(D)) → quantity(D); list(duration) → duration; record → number; table → record null the sum, exact while every operand is an integer; quantities sum within one dimension сумма, точная, пока каждый операнд целый; величины суммируются в пределах одной размерности --of=expr (-o=expr) names what to reduce in each member; over the numeric coercion of each value; a value with no coercion is skipped as missing; an empty input is null; on the plain pipe the same over a list topic, a non-list topic as a singleton --of=expr (-o=expr) называет, что редуцировать у члена; над числовым приведением каждого значения; значение без приведения пропускается как отсутствующее; пустой вход даёт null; на простом пайпе то же над топиком-списком, не-список — как одиночка sec:aggregate-commands spec sentence fixed (quantity among numbers; two units)
product @| | product{stream}(-o|--of=expr?) reducing list(number) → number; record → number; table → record 1 the product, folded from 1, exact while every operand is an integer произведение, свёрнутое от 1, точное, пока каждый операнд целый --of=expr (-o=expr) names what to reduce in each member; over the numeric coercion of each value; a value with no coercion is skipped as missing; an empty input is null; on the plain pipe the same over a list topic, a non-list topic as a singleton --of=expr (-o=expr) называет, что редуцировать у члена; над числовым приведением каждого значения; значение без приведения пропускается как отсутствующее; пустой вход даёт null; на простом пайпе то же над топиком-списком, не-список — как одиночка sec:aggregate-commands
min @| | min{stream}(-o|--of=expr?) reducing list(number) → number; list(quantity(D)) → quantity(D); list(instant) → instant; list(duration) → duration; record → number; table → record null the least value наименьшее значение --of=expr (-o=expr) names what to reduce in each member; over the numeric coercion of each value; a value with no coercion is skipped as missing; an empty input is null; on the plain pipe the same over a list topic, a non-list topic as a singleton; text does not order here, sort does --of=expr (-o=expr) называет, что редуцировать у члена; над текстом не работает, для него есть sort sec:aggregate-commands
max @| | max{stream}(-o|--of=expr?) reducing list(number) → number; list(quantity(D)) → quantity(D); list(instant) → instant; list(duration) → duration; record → number; table → record null the greatest value наибольшее значение --of=expr (-o=expr) names what to reduce in each member; over the numeric coercion of each value; a value with no coercion is skipped as missing; an empty input is null; on the plain pipe the same over a list topic, a non-list topic as a singleton --of=expr (-o=expr) называет, что редуцировать у члена; над числовым приведением каждого значения; значение без приведения пропускается как отсутствующее; пустой вход даёт null; на простом пайпе то же над топиком-списком, не-список — как одиночка sec:aggregate-commands
mean @| | mean{stream}(-o|--of=expr?) reducing list(number) → float; list(quantity(D)) → quantity(D); record → number; table → record null the arithmetic mean среднее арифметическое --of=expr (-o=expr) names what to reduce in each member; over the numeric coercion of each value; a value with no coercion is skipped as missing; an empty input is null; on the plain pipe the same over a list topic, a non-list topic as a singleton; avg is the alias --of=expr (-o=expr) называет, что редуцировать у члена; avg — псевдоним sec:aggregate-commands
avg @| | avg{stream}(-o|--of=expr?) reducing list(number) → float; record → number; table → record null alias of mean: mean, the alias псевдоним mean: mean, псевдоним --of=expr (-o=expr) names what to reduce in each member --of=expr (-o=expr) называет, что редуцировать у члена sec:aggregate-commands
median @| | median{stream}(-o|--of=expr?) reducing list(number) → number; record → number; table → record null the median, the mean of the two middle values when even медиана, среднее двух средних значений при чётном числе --of=expr (-o=expr) names what to reduce in each member; over the numeric coercion of each value; a value with no coercion is skipped as missing; an empty input is null; on the plain pipe the same over a list topic, a non-list topic as a singleton --of=expr (-o=expr) называет, что редуцировать у члена; над числовым приведением каждого значения; значение без приведения пропускается как отсутствующее; пустой вход даёт null; на простом пайпе то же над топиком-списком, не-список — как одиночка sec:aggregate-commands
percentile @| | percentile{stream}(p; -o|--of=expr?) reducing list(number) → number; record → number; table → record null the p-th percentile, 0 ≤ p ≤ 100, interpolated linearly between the sorted values (R's type 7, NumPy's default); an integer result stays an integer when the rank lands on a value p-й процентиль, 0 ≤ p ≤ 100, с линейной интерполяцией между отсортированными значениями (тип 7 в R, умолчание NumPy); целый результат остаётся целым, когда ранг попадает на значение --of=expr (-o=expr) names what to reduce in each member; a p outside the range is refused --of=expr (-o=expr) называет, что редуцировать у члена; p вне диапазона отвергается sec:aggregate-commands
std @| | std{stream}(-s|--sample -o|--of=expr?) reducing list(number) → float; record → number; table → record null the population standard deviation; std(--sample) divides by n−1 стандартное отклонение генеральной совокупности; std(--sample) делит на n−1 --of=expr (-o=expr) names what to reduce in each member; null below two values with --sample; stddev is the alias --of=expr (-o=expr) называет, что редуцировать у члена; null при менее чем двух значениях с --sample; stddev — псевдоним sec:aggregate-commands
stddev @| | stddev{stream}(-s|--sample -o|--of=expr?) reducing list(number) → float; record → number; table → record null alias of std: std, the alias псевдоним std: std, псевдоним --of=expr (-o=expr) names what to reduce in each member --of=expr (-o=expr) называет, что редуцировать у члена sec:aggregate-commands
var @| | var{stream}(-s|--sample -o|--of=expr?) reducing list(number) → float; record → number; table → record null the population variance; var(--sample) divides by n−1 дисперсия генеральной совокупности; var(--sample) делит на n−1 --of=expr (-o=expr) names what to reduce in each member; null below two values with --sample; variance is the alias --of=expr (-o=expr) называет, что редуцировать у члена; null при менее чем двух значениях с --sample; variance — псевдоним sec:aggregate-commands
variance @| | variance{stream}(-s|--sample -o|--of=expr?) reducing list(number) → float; record → number; table → record null alias of var: var, the alias псевдоним var: var, псевдоним --of=expr (-o=expr) names what to reduce in each member --of=expr (-o=expr) называет, что редуцировать у члена sec:aggregate-commands
entropy @| | entropy{stream}(-o|--of=expr?) reducing list(int) → float (counts); list(value) → float (tokens) null the Shannon entropy in bits: a stream of numbers read as counts, any other stream as tokens whose distribution is measured энтропия Шеннона в битах: поток чисел читается как счёты, любой другой поток — как токены, чьё распределение измеряется --of=expr (-o=expr) names what to reduce in each member; //token<word>::lower @| entropy and the same through group | count agree --of=expr (-o=expr) называет, что редуцировать у члена; //token<word>::lower @| entropy и то же через group | count совпадают sec:aggregate-commands
yule_k @| | yule_k{stream}(-o|--of=expr?) reducing list(int) → float null Yule's K over a stream of counts, 10⁴(Σc² − N)/N² K Юла над потоком счётов, 10⁴(Σc² − N)/N² --of=expr (-o=expr) names what to reduce in each member --of=expr (-o=expr) называет, что редуцировать у члена sec:aggregate-commands
mtld @| | mtld{stream}(t?; -o|--of=expr?) reducing list(value) → float null the measure of textual lexical diversity over tokens: the mean run length over which the type-token ratio stays above t (0.72), forward and backward averaged мера лексического разнообразия текста над токенами: средняя длина отрезка, на котором отношение типов к токенам держится выше t (0.72), усреднённая вперёд и назад --of=expr (-o=expr) names what to reduce in each member; a stream that never falls below t is null --of=expr (-o=expr) называет, что редуцировать у члена; поток, никогда не опускающийся ниже t, даёт null sec:aggregate-commands
ttr @| | ttr{stream}(-o|--of=expr?) reducing list(value) → float null the type-token ratio, distinct values over all отношение типов к токенам, различные значения ко всем --of=expr (-o=expr) names what to reduce in each member --of=expr (-o=expr) называет, что редуцировать у члена sec:aggregate-commands
hapax @| | hapax{stream}(-o|--of=expr?) reducing list(value) → list(value) no thread the values that occur once, one thread each in first-occurrence order значения, встречающиеся один раз, по нити на каждое в порядке первого появления --of=expr (-o=expr) names what to reduce in each member; @| hapax @| count is the figure --of=expr (-o=expr) называет, что редуцировать у члена; @| hapax @| count — само число sec:aggregate-commands
sort @| | sort{stream}(LOCALE?; -a|--atergo -d|--desc -o|--of=expr?) reducing list(T) → list(T) no thread the threads sorted by value, numbers before text; under a collation locale by that locale's CLDR order; --atergo the inverse-lexicographic order from the last character нити, отсортированные по значению, числа перед текстом; под локалью сортировки — по её порядку CLDR; --atergo — обратно-лексикографический порядок от последнего символа --of=expr (-o=expr) names what to reduce in each member; descending is | reverse composed; an invalid locale tag fails the parse, an untailored one collates by root; a table is refused (sort by a column with @| sort_by) --of=expr (-o=expr) называет, что редуцировать у члена; по убыванию — через | reverse; неверный тег локали не проходит разбор, локаль без настройки сортируется по корню; таблица отвергается (сортировка по столбцу — @| sort_by) sec:aggregate-commands
unique @| | unique{stream}(-o|--of=expr?) reducing list(T) → list(T); table → table no thread the distinct values in order of first appearance, values by value and nodes by identity различные значения в порядке первого появления, значения — по значению, узлы — по тождеству --of=expr (-o=expr) names what to reduce in each member; it does not sort; on a table the rows, a table back --of=expr (-o=expr) называет, что редуцировать у члена; не сортирует; на таблице — строки, обратно таблица sec:aggregate-commands
reverse @| | reverse{stream}(-o|--of=expr?) reducing list(T) → list(T); table → table no thread the threads in reverse order нити в обратном порядке --of=expr (-o=expr) names what to reduce in each member; on a table the rows, a table back --of=expr (-o=expr) называет, что редуцировать у члена; на таблице — строки, обратно таблица sec:aggregate-commands
first @| | first{stream}(n?; -o|--of=expr?) reducing list(T) → T; list(T) → list(T) with n; value → value; table → record; table → table with n null the first value, or the first n in stream order первое значение или первые n в порядке потока --of=expr (-o=expr) names what to reduce in each member; an empty input is null; a non-list topic passes through; on a table the row as a record, as | [1] and | [-1], and with n those rows as a table --of=expr (-o=expr) называет, что редуцировать у члена; пустой вход даёт null; топик не-список проходит как есть; на таблице — строка как запись, как | [1] и | [-1], а с n — эти строки таблицей sec:aggregate-commands
last @| | last{stream}(n?; -o|--of=expr?) reducing list(T) → T; list(T) → list(T) with n; value → value; table → record; table → table with n null the last value, or the last n in stream order последнее значение или последние n в порядке потока --of=expr (-o=expr) names what to reduce in each member; an empty input is null; a non-list topic passes through; on a table the row as a record, as | [1] and | [-1], and with n those rows as a table --of=expr (-o=expr) называет, что редуцировать у члена; пустой вход даёт null; топик не-список проходит как есть; на таблице — строка как запись, как | [1] и | [-1], а с n — эти строки таблицей sec:aggregate-commands
join @| | join{stream}(sep?; -o|--of=expr?) reducing list(value) → text "" the values joined into one text with the separator, none unless given значения, соединённые в один текст разделителем, по умолчанию без него --of=expr (-o=expr) names what to reduce in each member --of=expr (-o=expr) называет, что редуцировать у члена sec:aggregate-commands
frequencies @| | frequencies{stream}(k?; -n|--nulls -o|--of=expr?) reducing list(value) → list(record) no thread each distinct value with its count as %(value; n), most frequent first, equal counts by value ascending, nulls left out; frequencies(k) keeps the top k каждое различное значение со своим счётом как %(value; n), сначала самые частые, равные счёты по возрастанию значения, null опущены; frequencies(k) оставляет верхние k --nulls (-n) adds a row for the nulls, left out by default; --of=expr (-o=expr) names what to reduce in each member; | :n reads the count and | :value the value --nulls (-n) добавляет строку для null, по умолчанию опущенных; --of=expr (-o=expr) называет, что редуцировать у члена; | :n читает счёт, | :value — значение sec:aggregate-commands
bins @| bins{stream}(n?; -o|--of=expr?) reducing list(number) → table no thread the numbers binned: n equal-width bins over min..max (10 unless given) as the table #(@(from; to; count)), one row per bin, open at to except the last, the nulls counted in a last row with null edges; edges printed at the precision that tells them apart числа по корзинам: n корзин равной ширины между min и max (10, если не задано) таблицей #(@(from; to; count)), по строке на корзину, открытой на to, кроме последней, null сосчитаны в последней строке с границами null; границы печатаются с точностью, различающей их --of=expr (-o=expr) names what to reduce in each member; text that reads as a number counts as one, any other value refuses naming histogram; bins(0) refuses --of=expr (-o=expr) называет, что редуцировать у члена; текст, читающийся числом, считается им, любое другое значение отвергается с указанием на histogram; bins(0) отвергается sec:aggregate-commands
histogram @| histogram{stream}(n?; -w|--width=cells? -o|--of=expr?) reducing list(value) → text no thread the stream drawn as bars, one text: numbers in n equal-width bins labelled from–to, whole numbers with no more distinct values than bins one bar per value in numeric order, other values one bar per distinct value most frequent first (n shown, the rest one "other" bar), the nulls a last bar, the count after each bar поток столбиками, одним текстом: числа в n корзинах равной ширины с подписями from–to, целые с числом различных значений не больше корзин — по столбику на значение по порядку, другие значения — по столбику на различное значение, сначала самые частые (показаны n, остальные одним столбиком «other»), null последним столбиком, за каждым столбиком его счёт --of=expr (-o=expr) names what to reduce in each member; --width=w (-w=w) the longest bar in cells (40): the longest drawn value sets the scale, the other and null bars stand outside it and fill the width past it, any count shows at least an eighth; switches last: histogram(5; -w=20) --of=expr (-o=expr) называет, что редуцировать у члена; --width=w (-w=w) — самый длинный столбик в клетках (40): масштаб задаёт самое длинное нарисованное значение, столбики other и null стоят вне него и заполняют ширину, когда его превышают, любой счёт показывает хотя бы восьмую; переключатели последними: histogram(5; -w=20) sec:aggregate-commands
combinations @| | combinations{stream}(n; -o|--of=expr?) reducing list(value) → list(list) no thread every unordered n-member subset of the stream's distinct values, each once, as a list in the values' own order каждое неупорядоченное n-элементное подмножество различных значений потока, по разу, списком в собственном порядке значений --of=expr (-o=expr) names what to reduce in each member --of=expr (-o=expr) называет, что редуцировать у члена sec:aggregate-commands
pairs @| | pairs{stream}(-o|--of=expr?) reducing list(value) → list(list) no thread combinations(2) combinations(2) --of=expr (-o=expr) names what to reduce in each member --of=expr (-o=expr) называет, что редуцировать у члена sec:aggregate-commands
triples @| | triples{stream}(-o|--of=expr?) reducing list(value) → list(list) no thread combinations(3) combinations(3) --of=expr (-o=expr) names what to reduce in each member --of=expr (-o=expr) называет, что редуцировать у члена sec:aggregate-commands
bigrams @| | bigrams{stream}(-o|--of=expr?) reducing list(T) → list(list) no thread the adjacent pairs of the stream in order, full windows only, ngrams(2) соседние пары потока по порядку, только полные окна, ngrams(2) --of=expr (-o=expr) names what to reduce in each member --of=expr (-o=expr) называет, что редуцировать у члена sec:aggregate-commands
trigrams @| | trigrams{stream}(-o|--of=expr?) reducing list(T) → list(list) no thread the adjacent triples of the stream, ngrams(3) соседние тройки потока, ngrams(3) --of=expr (-o=expr) names what to reduce in each member --of=expr (-o=expr) называет, что редуцировать у члена sec:aggregate-commands
skipgrams @| | skipgrams{stream}(n; k; -o|--of=expr?) reducing list(T) → list(list) no thread the n-grams with up to k positions skipped: every subsequence of n values leaving out at most k of those it spans, in the lexicographic order of positions n-граммы с пропуском до k позиций: каждая подпоследовательность из n значений, опускающая не более k из охваченных, в лексикографическом порядке позиций --of=expr (-o=expr) names what to reduce in each member; skipgrams(n; 0) is ngrams(n) --of=expr (-o=expr) называет, что редуцировать у члена; skipgrams(n; 0) — это ngrams(n) sec:aggregate-commands
jaccard @| | jaccard{stream}(list; -o|--of=expr?) reducing list(value), list → float null the Jaccard similarity of the stream's distinct values to the list's, the intersection over the union, 0 to 1 сходство Жаккара различных значений потока со значениями списка, пересечение к объединению, от 0 до 1 --of=expr (-o=expr) names what to reduce in each member; 0 where the two share nothing --of=expr (-o=expr) называет, что редуцировать у члена; 0, когда общего нет sec:aggregate-commands
corr @| | corr{stream}(a; b) assoc list(value) → float null Pearson's r between two per-thread expressions r Пирсона между двумя понитевыми выражениями a thread missing either reading is dropped; fewer than two pairs, or no spread on a side, is null; on the plain pipe per group нить без одного из чтений отбрасывается; менее двух пар или отсутствие разброса с одной стороны дают null; на простом пайпе — по группам sec:aggregate-commands
spearman @| | spearman{stream}(a; b) assoc list(value) → float null Spearman's ρ on average ranks ρ Спирмена по средним рангам as corr как corr sec:aggregate-commands
cosine @| | cosine{stream}(a; b) assoc list(value) → float null the cosine of the two vectors косинус двух векторов as corr как corr sec:aggregate-commands
delta @| | delta{stream}(a; b) assoc list(value) → float null Burrows's Delta, the mean absolute difference of two profiles' standard scores over the pairs дельта Барроуза, среднее абсолютное различие стандартных оценок двух профилей по парам as corr как corr sec:aggregate-commands
dp @| | dp{stream}(n; size) assoc list(value) → float null Gries's deviation of proportions over pairs of a part's count of a word and the part's size: 0 an even spread, 1 a word confined to a vanishing part отклонение пропорций Гриса по парам «счёт слова в части, размер части»: 0 — ровное распределение, 1 — слово, запертое в исчезающе малой части a corpus without the word, or without tokens, is null корпус без слова или без токенов даёт null sec:aggregate-commands
kappa @| | kappa{stream}(a; b) assoc list(value) → float null Cohen's κ agreement of two label expressions over the categories both sides name согласие κ Коэна двух выражений-меток по категориям, которые называют обе стороны a pair with a null side is dropped; no pairs, or one category on both sides, is null пара с null с одной стороны отбрасывается; отсутствие пар или одна категория с обеих сторон дают null sec:aggregate-commands
precision @| | precision{stream}(a; b) assoc list(value) → float null the precision of the second expression against the first, a label positive by its truthiness точность второго выражения относительно первого, метка положительна по своей истинности a zero denominator is null нулевой знаменатель даёт null sec:aggregate-commands
recall @| | recall{stream}(a; b) assoc list(value) → float null the recall of the second expression against the first полнота второго выражения относительно первого a zero denominator is null нулевой знаменатель даёт null sec:aggregate-commands
f1 @| | f1{stream}(a; b) assoc list(value) → float null the F₁ score of the second expression against the first F₁-мера второго выражения относительно первого sec:aggregate-commands
json | @| json{value}() both value → text; node → text; list(T) → text "null" the value as JSON (a record an object, a list an array); in a node context the node's subtree; over the stream one array значение как JSON (запись — объект, список — массив); в контексте узла — поддерево узла; над потоком — один массив one string; the output form of the value одна строка; форма вывода значения sec:output-commands
jsonl | @| jsonl{value}() both value → text; list(T) → text "null" over the stream JSON Lines, one document per line; on the pipe json under its other name над потоком — JSON Lines, по документу на строку; на пайпе — json под другим именем sec:output-commands
csv @| | csv{stream}(col…) rendering list(record) → text; table → text null the stream of records as one RFC 4180 CSV document: a header and a row per value, the columns the union of the fields in first-seen order or the named ones; a scalar under value поток записей одним документом CSV по RFC 4180: заголовок и строка на значение, колонки — объединение полей в порядке первого появления или названные; скаляр под value a missing field is an empty cell; on the plain pipe a table value only отсутствующее поле — пустая ячейка; на простом пайпе — только значение-таблица sec:output-commands
pretty @| | pretty{stream}(col…; -p|--precision=n?) rendering list(record) → text; value → text "null" the stream of records as an aligned text table with a rule under the header; on the pipe the pretty-printer of any value, recursing: a record one field per line at every depth (a nested record opens after its field, its keys in one column under the first), a list on one line when it fits in 72 columns and holds no record, else one item per line, a table the grid, a scalar as it is поток записей как выровненная текстовая таблица с чертой под заголовком; на пайпе — красивая печать любого значения, рекурсивно: запись по полю на строку на любой глубине (вложенная открывается после своего поля, её ключи в одной колонке под первым), список на одной строке, когда умещается в 72 колонки и не содержит записей, иначе по элементу на строку, таблица — сеткой, скаляр — как есть a float prints with at most six digits after the point, trailing zeros dropped, the value untouched; -p=n (--precision=n) sets the digits, -p=0 prints floats whole; numeric columns of the grid right-aligned on the decimal point; the output form, csv and json keep every digit; a list of records of one shape prints as the grid, records that differ one per item вещественное число печатается не более чем с шестью знаками после точки, без хвостовых нулей, значение не тронуто; -p=n (--precision=n) задаёт число знаков, -p=0 печатает целиком; числовые столбцы сетки выровнены вправо по точке; форма вывода, csv и json хранят каждую цифру sec:output-commands
copy | @| copy{value}() both value → null null the output to the clipboard instead of the screen, exactly as it would have printed; in its place one diagnostic, info or warning, saying what was copied and where, copied 1.2 MB as JSON вывод в буфер обмена вместо экрана, ровно таким, каким он был бы напечатан; вместо него одна диагностика, info или warning, говорящая, что и куда скопировано: copied 1.2 MB as JSON rides either pipe with one meaning, since the output is one thing; stands last: a command after it refuses, a value wanted mid-pipeline is pushed and recalled before the copy, a query copies once; takes no operand and no option, copy(json) refuses, the format is whatever rendered before it (@| json | copy); the engine marks the run and the host serves it, a browser through its clipboard API, qua through the terminal (OSC 52) or a local tool past 100 KB with a warning that points at the redirection, qua … > file едет на любом пайпе с одним значением, поскольку вывод — одна вещь; стоит последним: команда после него получает отказ, значение, нужное в середине конвейера, кладётся в капсу и вызывается перед копированием, запрос копирует один раз; не принимает ни операнда, ни опции, copy(json) отказывает, формат — тот, что отрендерен перед ним (@| json | copy); движок отмечает прогон, а хост обслуживает отметку — браузер через API буфера обмена, qua через терминал (OSC 52) или локальный инструмент свыше 100 КБ с предупреждением, указывающим на перенаправление, qua … > file par:copy
kaiv | @| kaiv{value}() both value → text; node → text; list(T) → text null the stream as one kaiv document, each result under /@results, typed values keeping their units; on the pipe one value, or a node's subtree in value form поток одним документом kaiv, каждый результат под /@results, типизированные значения с единицами; на пайпе — одно значение или поддерево узла в форме значения the command sees values, so the document carries no provenance команда видит значения, поэтому документ не несёт провенанса sec:output-commands
encoding @| encoding{stream}(LABEL) context list(text) → bytes no thread the output boundary: the stream's text encoded in the named encoding, as bytes a tool writes as they are; stands last, after a serialization граница вывода: текст потока в названной кодировке, байтами, которые инструмент пишет как есть; стоит последней, после сериализации after json or jsonl an unrepresentable character becomes a \u escape; after plain text, csv, pretty or kaiv the command is refused at the first such character после json или jsonl непредставимый символ становится \u-экранированием; после простого текста, csv, pretty или kaiv команда отвергается на первом таком символе sec:output-commands
xml | xml{node}() scalar node → text; value → text null the node's subtree as XML: name to tag, children nested, a leaf's scalar its text; a record maps @name fields to attributes, #text to text, the rest to elements поддерево узла как XML: имя — в тег, дети вложены, скаляр листа — его текст; запись отображает поля @name в атрибуты, #text в текст, остальное в элементы sec:value-commands
markdown | markdown{node}() scalar node → text null the node's subtree rendered as Markdown text поддерево узла, выведенное текстом Markdown sec:value-commands
html | html{node}() scalar node → text null the node's subtree serialized as HTML поддерево узла, сериализованное как HTML sec:value-commands
atrep | atrep{node}() scalar node → text null the node's subtree as atrep text поддерево узла как текст atrep sec:value-commands
conllu | conllu{node}() scalar node → text null the node's subtree as CoNLL-U поддерево узла как CoNLL-U sec:value-commands
link | link{node}() scalar node → record null the host's link record of the node, %(title; href; text), what a page adapter gives a page so that a result is clickable in the hosts запись ссылки узла, которую даёт хост, %(title; href; text), то, что адаптер страницы даёт странице, чтобы результат был кликабельным в хостах null where the host has no such notion; an HTML <a> carries ::href, not a link record null там, где у хоста нет такого понятия; HTML <a> несёт ::href, а не запись ссылки sec:value-commands
bibref | bibref{text}(STANDARD) scalar text → record null one reference text written to a citation standard (gost, gb7714, cmos, ams) parsed into a record under the bibliography's campi один текст ссылки, записанной по стандарту цитирования (gost, gb7714, cmos, ams), разобранный в запись по кампам библиографии null where the text is no reference; refused for a tag the implementation lacks null там, где текст не ссылка; отвергается для тега, которого нет у реализации sec:value-commands
session expr session(-p|--pretty=always|structures|off? --precision=n? -d|--diagnostics=error|warning|info|debug?) function null → record null the session's settings: with options sets them and answers nothing; alone answers them as a record, %(pretty = "off"; precision = 6; diagnostics = "warning") настройки сессии: с опциями задаёт их и ничего не отвечает; сама по себе отвечает ими записью, %(pretty = "off"; precision = 6) --pretty=always prints every result through pretty, structures only lists, records and tables, off the default; --precision=n is pretty's digits; stands as a cell of its own or heads a query before a pipe; a one-shot run is its own session; --diagnostics=LEVEL sets what is shown beside an answer, error, warning (the default), info (what was pushed to a source, what was delegated, the locale in force) or debug, the level changing what is shown and never what is raised --pretty=always печатает каждый результат через pretty, structures — только списки, записи и таблицы, off — умолчание; --precision=n — знаки pretty; стоит отдельной ячейкой или открывает запрос перед пайпом; одноразовый запуск — своя сессия; --diagnostics=LEVEL задаёт, что показывается рядом с ответом: error, warning (по умолчанию), info (что протолкнуто в источник, что делегировано, какая локаль в силе) или debug; уровень меняет показ, а не то, что поднято sec:session-memory
melt | @| melt{table}(id; id…; --name=field? --value=field?) both record → record…; table → table; list(record) → list(record) no thread wide to long: every field beyond the named ids becomes a record of the ids and two new fields, variable (the field's name) and value; a table value melts its rows and answers the long table из широкого в длинный: каждое поле сверх названных id становится записью из id и двух новых полей, variable (имя поля) и value; значение-таблица плавит свои строки и отвечает длинной таблицей --name= and --value= rename the two fields; pivot(id; variable; value) goes back --name= и --value= переименовывают два поля; pivot(id; variable; value) возвращает назад sec:tables-reshapes
tree @| tree{context}(expr…; -d|--depth=n? -k|--kind -t|--traits -p|--props -r|--record -s|--sample=n?) context list(node) → text no thread the node context drawn as a tree: the starting points with their subtrees, the mount root on top, a dotted stub for a starting point below the root, crosslinks one hop deep; the kind, traits, property names or the property record and expression columns beside each name контекст узлов, нарисованный деревом: отправные точки с поддеревьями, корень монтирования наверху, пунктирный отросток для точки ниже корня, кросс-ссылки на один хоп; род, трейты, имена свойств или запись свойств и колонки выражений рядом с каждым именем --depth=n (-d=n) stops the drawing n levels below the starting points; --kind (-k), --traits (-t), --props (-p), --record (-r: the scalar properties, no child with children nor a null member, none when there are none, six fields then ; …) stand last and bundle; sibling leaves whose lines read alike collapse to one line with a count (row ×891); --sample=n (-s=n) draws the first n children of a node that has more and closes with "… and N more" --depth=n (-d=n) останавливает рисунок на n уровнях ниже отправных точек; --kind (-k), --traits (-t), --props (-p), --record (-r: скалярные свойства, без детей с детьми и без членов со значением null, ничего, когда их нет, шесть полей и ; …) стоят последними и склеиваются; соседние листья с одинаковыми строками сворачиваются в одну строку со счётом (row ×891); --sample=n (-s=n) рисует первых n детей узла, у которого их больше, и закрывает «… and N more» sec:output-commands
record | record{value}(field…) scalar retired: the record is %(…) отменено: запись — это %(…) refused with the pointer отвергается с указателем sec:value-commands registered only as a retired pointer
rec | rec{value}(field…) scalar retired: the record is %(…) отменено: запись — это %(…) refused with the pointer отвергается с указателем sec:value-commands registered only as a retired pointer