Extraordinary Ordinals: как математики заставили компилятор считать до бесконечности и не сойти с ума

Очередной способ заставить компилятор работать за вас — на этот раз с помощью ординалов, которые больше похожи на заклинание из D&D, чем на код.
Когда обычный программист видит слово «ординал», он думает о чём-то из высшей математики, которое он успешно забыл после универа. Но Marvin Borner решил, что это отличный повод написать компилятор, который понимает трансфинитные числа. Спойлер: теперь ваш код может уйти в рекурсию глубже, чем ваша JIRA-доска.
Что это вообще такое?
Extraordinary Ordinals — это экспериментальный компилятор, который оперирует ординальными числами (теми самыми, что идут после бесконечности). Если обычные языки программирования заканчиваются на int или BigInt, то здесь можно объявить переменную типа ω (омега) и спокойно складывать её с ω+1. Звучит как магия? На самом деле это просто ещё один способ отложить рантайм-ошибки на этап компиляции.
Почему это может быть полезно?
Разработчики, которые когда-либо писали доказательства теорем или работали с зависимыми типами, оценят: ординалы позволяют формально верифицировать программы с бесконечными циклами. Хотите доказать, что ваш while(true) когда-нибудь завершится? Просто укажите ординал в качестве счётчика. Правда, если вы ошибётесь, компилятор может зависнуть в попытке посчитать ω^ω.
Комментарий студии METABYTE
Пока мир обсуждает очередной JS-фреймворк, кто-то пишет компилятор для бесконечности. Если ваш проект требует строгих гарантий завершения, мы поможем — но, пожалуй, обойдёмся без ординалов, чтобы не пришлось объяснять клиенту, почему его фича «висит» на омеге.