1e-15 тоже считается false, используем классическое сравнение с малой величиной: `std::abs(x) <= kEpsilon`. Реальных случаев использования такого преобразования типов пользователями нет, можно сказать, что оно является исторически сложившимся.
Это интересный инструмент, но под наш случай не очень подходит.
Если вернуться к исходной задаче: необходимость трансляции нашего DSL в Go возникла в контексте миграции на другую систему — Temporal. Ключевой момент в том, что в Temporal вместо декларативного DSL разработчики пишут код на языке общего назначения (Go, TypeScript и др.).
Таким образом, DSL, в том числе такой, как и expr-lang for Go, в новой архитектуре просто не нужен — его задачи берёт на себя сам язык программирования с полноценными возможностями.
1e-15 тоже считается
false, используем классическое сравнение с малой величиной: `std::abs(x) <= kEpsilon`. Реальных случаев использования такого преобразования типов пользователями нет, можно сказать, что оно является исторически сложившимся.Да, Scheme, конечно, фундаментальная вещь. Но пока следующим этапом стал переход на систему без DSL.
Это интересный инструмент, но под наш случай не очень подходит.
Если вернуться к исходной задаче: необходимость трансляции нашего DSL в Go возникла в контексте миграции на другую систему —
Temporal. Ключевой момент в том, что в Temporal вместо декларативного DSL разработчики пишут код на языке общего назначения (Go, TypeScript и др.).Таким образом, DSL, в том числе такой, как и expr-lang for Go, в новой архитектуре просто не нужен — его задачи берёт на себя сам язык программирования с полноценными возможностями.