- общие функции:
nil(): nil— возвращает значение нулевого типа;type(x: any): str— возвращает имя типа переданного значения;==(x: any, y: any): bool— равенство;!=(x: any, y: any): bool— неравенство;!(x: any): bool— логическое отрицание;&&(x: any, y: any): any— конъюнкция; функция является ленивой —yвычисляется только при необходимости (то есть когдаxистинен); возвращается вычисленное значение;||(x: any, y: any): any— дизъюнкция; функция является ленивой —yвычисляется только при необходимости (то есть когдаxложен); возвращается вычисленное значение;??(value: any, default: any): any— возвращаетvalue, если оно не равноnil; в противном случае возвращаетсяdefault;if(condition: bool, true_value: any, false_value: any): any— выбор: еслиconditionистинно, возвращаетtrue_value, иначе —false_value; функция является ленивой — вычисляется только возвращаемое значение;+(x: num|list<any>|hash<any, any>, y: num|list<any>|hash<any, any>): num|list<any>|hash<any, any>— возвращает результат комбинирования переданных аргументов:- если оба аргумента имеют тип
num, то функция возвращает результат их сложения; - если оба аргумента имеют тип
list<any>, то функция возвращает результат их конкатенации; - если оба аргумента имеют тип
hash<any, any>, то функция возвращает результат их слияния;
- если оба аргумента имеют тип
size(x: list<any>|hash<any, any>|pack<any>): num— возвращает размер (длину) переданного аргумента;.(index: any, container: list<any>|hash<any, any>|pack<any>): any— возвращает элементindexиз контейнераcontainer:- если
containerимеет типlist<any>, то функция возвращает элемент с индексомindex; если индекс отрицателен, он трактуется как номер элемента с конца списка; если индекс выходит за границы списка, то функция возвращаетnil; - если
containerимеет типhash<any, any>, то функция возвращает соответствующее ключуindexзначение; если указанный ключ отсутствует в хеш-таблице, функция возвращаетnil; - если
containerимеет типpack<any>, то он трактуется как список длиной 1;
- если
- функции для работы с логическими значениями:
false(): bool— возвращает ложное логическое значение (число 0);true(): bool— возвращает истинное логическое значение (число 1);bool(x: any): bool— преобразует значение в логический тип: возвращает строго 0 или 1;
- функции для работы с числами:
<(x: num, y: num): bool— меньше;<=(x: num, y: num): bool— меньше или равно;>(x: num, y: num): bool— больше;>=(x: num, y: num): bool— больше или равно;_(x: num): num— унарный минус;++(x: num): num— инкремент;--(x: num): num— декремент;-(x: num, y: num): num— вычитание;*(x: num, y: num): num— умножение;/(x: num, y: num): num— деление;%(x: num, y: num): num— остаток от деления;- битовые функции:
&(x: num, y: num): num— побитовое И;|(x: num, y: num): num— побитовое ИЛИ;^(x: num, y: num): num— побитовое исключающее ИЛИ;<<(x: num, y: num): num— сдвиг влево;>>(x: num, y: num): num— арифметический сдвиг вправо;>>>(x: num, y: num): num— логический сдвиг вправо;~(x: num): num— побитовое НЕ;
- математические функции:
- математические константы:
nan(): num;inf(): num;pi(): num;e(): num;
floor(x: num): num;ceil(x: num): num;trunc(x: num): num;round(x: num): num;sin(x: num): num;cos(x: num): num;tn(x: num): num;arcsin(x: num): num;arccos(x: num): num;arctn(x: num): num;angle(x: num, y: num): num— atan2;pow(base: num, exponent: num): num;sqrt(x: num): num;exp(x: num): num;ln(x: num): num;lg(x: num): num;abs(x: num): num;is_nan(x: num): bool;- генерация псевдослучайных чисел:
seed(x: any): nil— устанавливает начальное состояние генератора псевдослучайных чисел; еслиxравенnil, то для генерации начального состояния используется системный источник энтропии, а если тот недоступен — системное время; еслиxимеет любое другое значение, то для генерации начального состояния используется хеш отx;random(): num— возвращает псевдослучайное число в диапазоне [0; 1);
- математические константы:
- функции для работы со списками:
[](): list<any>— возвращает пустой список;,(head: any, tail: list<any>): list<any>— конструирует новый список из переданных головы и хвоста;head(list: list<any>): any— возвращает голову переданного списка, если он не пуст; в противном случае возвращаетсяnil;tail(list: list<any>): nil|list<any>— возвращает хвост переданного списка, если он не пуст; в противном случае возвращаетсяnil;
- функции для работы со строками:
num(x: str): num— парсит число из строки;str(x: any): str— преобразует переданное значение в строку;strb(x: bool): str— преобразует переданное логическое значение в строку: еслиxистинно, возвращает"true", иначе —"false";strs(x: str): str— преобразует переданную строку в другую строку, экранируя её символы и окружая всю строку кавычками;strl(x: list<str>): str— преобразует переданный список строк в строку, отображая при этом строки как строки;strh(x: hash<str, any>): str— преобразует переданную хеш-таблицу, у которой ключи имеют строковый тип, в строку, отображая при этом ключи как строки;strhh(x: hash<str, str>): str— преобразует переданную хеш-таблицу, у которой и ключи, и значения имеют строковый тип, в строку, отображая при этом и ключи, и значения как строки;
- функции для работы с хеш-таблицами:
{}(): hash<any, any>— возвращает пустую хеш-таблицу;#(key: any, value: any, hash: hash<any, any>): hash<any, any>— еслиvalueне равноnil, то возвращает новую хеш-таблицу, в которую было добавлено значениеvalueс ключомkey; еслиvalueравноnil, то возврашает новую хеш-таблицу, из которой было удалено значение с ключомkey;keys(hash: hash<any, any>): list<any>— возвращает список ключей хеш-таблицыhash;
- функции для упаковки:
>@(x: any): pack<any>— упаковывает переданное значение без его предварительного вычисления;<@(x: pack<any>): any— распаковывает переданное значение;<<@(x: pack<any>): any— распаковывает переданное значение в цикле до тех пор, пока результат является упакованным значением;
- системные функции:
load(filename: str): any— загружает файл скриптаfilename, выполняет его и возвращает полученный результат;is_main(): bool— возвращает истину, если файл, в котором она была вызвана, был передан для загрузки непосредственно интерпретатору, и ложь — если был загружен посредством функцииload;args(): list<str>— возвращает список аргументов командной строки, причём первым аргументом будет путь к файлу скрипта; если же код скрипта был прочитан с stdin, первым аргументом будет строка"__stdin__";env(name: str): nil|str— возвращает значение указанной переменной окружения, если она установлена; в противном случае возвращаетсяnil; также интерпретатором осуществляется загрузка.env-конфига из текущей рабочей директории;time(): num— возвращает текущее UNIX-время по UTC;sleep(seconds: num): nil— останавливает выполнение скрипта на указанное количество секунд;secondsможет быть вещественным числом;exit(status: nil|num|str): nil— завершает выполнение скрипта; дополнительное поведение зависит от переданного статуса:- если
statusравенnil, то код возврата будет равен 0; - если
statusимеет типnumи находится в диапазоне [0, 127], то код возврата будет равенstatus; - если
statusимеет типstr, то код возврата будет равен 1, аstatusбудет выведен в stderr (вместе с дополнительным символом'\n'в конце);
- если
- функции для ввода/вывода:
in(number: nil|num): str— считывает указанное количество символов из stdin и возвращает их в виде строки; если количество будет отрицательным или вместо него будет переданnil, то будут считаны все доступные символы;inln(number: nil|num): str— считывает указанное количество символов из stdin и возвращает их в виде строки; если количество будет отрицательным или вместо него будет переданnil, то будут считаны все символы до символа'\n'или, если он отсутствует, все доступные символы;out(string: str): nil— выводит переданную строку в stdout;outln(string: str): nil— выводит переданную строку в stdout и переводит строку (добавляет символ'\n');err(string: str): nil— выводит переданную строку в stderr;errln(string: str): nil— выводит переданную строку в stderr и переводит строку (добавляет символ'\n').
