Topazdocs
Стандартная библиотека и среда

Базовая библиотека

Канонический API, поведение, доказательства и ограничения: Базовая библиотека.

Core floor фиксирует construction, conversion, доступ к скалярам текста, higher-order transforms, Option/Result helpers и profile-gated testing без скрытого coercion.

Канонический контракт

Prelude constructors: Some, None, Ok, Err; неразрешённым type variables нужен expected type. print принимает только string. toInt и conversion возвращают Option или объявленную ошибку, не exception. s.scalars() даёт строки из одного скаляра; у string нет .length. Free map, filter, reduce работают только с фиксированными iterable families.

Публичная поверхность

Inventory добавляет toIntRadix, fromCodePoint, toFloat, input, 13 Math members, string search/trim/split/slice/replace, Option okOr/okOrElse/map/flatMap, Result map/flatMap, Bytes/Encoding, hashes, форматы, Date, BigInt, Decimal и точные JSON decode heads.

Наблюдаемое поведение

String operations используют scalar semantics или явно названные byte semantics. Higher-order calls вычисляют inputs/callbacks в заданном порядке коллекции. Option.map и optional access сохраняют/уплощают Option; Result mapping не превращает fault в Err. Typed JSON требует один записанный полностью известный target и возвращает deterministic $-rooted path при data failure.

Текущая поддержка

Основные имена проверяются статически, а виртуальный корень std предоставляет фиксированный набор модулей. Функции print и input доступны только в средах, которые предоставляют необходимый ввод и вывод.

Ограничения и исключения

Нельзя печатать non-string без interpolation, выводить unconstrained None/empty collection, считать string массивом, предполагать user Iterable, ловить fault Result-helper, decode recursive/open/imported schemas или публиковать test helpers. assert — функция только test-profile, не keyword.

Пример

TOPAZ
function parseAll(values: Array<string>) -> Array<Option<int>> {
    return map(values, value => toInt(value))
}

let scalars = "토파즈".scalars()
let parsed = parseAll(["1", "x", "3"])
print("{scalars.length}:{parsed}")

Связанные правила