Встроенные функции
Эта страница переведена сообщ еством на русский язык, но нуждается в улучшениях. Если вы хотите принять участие в переводе свяжитесь с @alexgton.
В этом разделе описываются некоторые конструкции языка, которые менее фундаментальны, чем те, что описаны в предыдущих статьях. Их можно было бы определить в stdlib.fc, но это оставило бы меньше места для оптимизатора FunC.
Выброс исключений
Исключения могут быть выброшены с помощью условных примитивов throw_if, throw_unless и безусловного throw. Первый аргумент — это код ошибки; второй — это условие (throw имеет только один аргумент). Эти примитивы имеют параметризованные версии throw_arg_if, throw_arg_unless и throw_arg. Первый аргумент — это параметр исключения любого типа; второй — это код ошибки; третий — это условие (throw_arg имеет только два аргумента).
Булевы значения
trueявляется псевдонимом для-1falseявляется псевдонимом для0
Переменная дампа
Переменная может быть выгружена в журнал отладки с помощью функции ~dump.
Строка дампа
Строка может быть выгружена в журнал отладки с помощью функции ~strdump.
Операции с целыми числами
muldiv— это операция умножения, а затем деления. Промежуточный результат сохраняется в 513-битном целом числе, поэтому он не будет переполне, если фактич еский результат поместится в 257-битное целое число.divmod- это операция, которая принимает два числа в качестве параметров и возвращает частное и остаток от их деления.
Другие примитивы
null?проверяет, является ли аргументnull. По значениюnullтипа TVM,NullFunC представляет отсутствие значения некоторого атомарного типа; смотрите значения null.touchи~touchперемещают переменную на вершину стекаatполучает значение компонента кортежа в указанной позиции