flang компилятор доказывает, что программа не зациклится 0.7.24 GitHub English

Карта конструкций языка

Каждое слово языка — узел. Сплошная стрелка значит «внутри первого пишется второе». Пунктирная значит «первое даёт второе» или «первое ссылается на второе». Какую конструкцию брать под какое действие — на странице Какую конструкцию когда брать.

Как читать

УзелЧто значит
прямоугольник с заливкойпонятие словаря языка; на карте стоит ровно один раз
скруглённый прямоугольникконструкция, которой в словаре нет
овал с пометкой «слой N»ссылка на понятие, нарисованное в слое N
овал без пометкиподпись: что подаётся на вход или получается на выходе

Сверка со словарём

В словаре 150 понятий. На карте понятий словаря 156, каждое по одному разу; расхождения нет. Сверх словаря на карте 22 узла: это конструкции, которые есть в спецификации, а в словаре их нет. Слоёв 17.

Снято 27 сентября 2026 на двоичном 0.7.22. Понятия словаря сосчитаны командой ниже. Узлы карты сосчитаны по тексту схем этой страницы: у понятия словаря номер узла равен номеру его строки в словаре.

grep -c '^| `' docs/glossary.md
СлойЧто в нёмПонятий словаряУзлов сверх словаря
1Файл и объявления140
2Свои типы: сумма и запись70
3Готовые типы и значения126
4Функция110
5Тело: разбор60
6Тело: если, свёртка, пусть50
7Вызов и связки80
8Арифметика, сравнения, логика150
9Формы над списком80
10Формы над строкой140
11Доказательства120
12Планы и поручения312
13Процессы и надзор54
14Категория и морфизмы130
15Функторы70
16Моноид и монада100
17Наследие прежней поверхности60
всего15622

Узлы сверх словаря, поимённо:

СлойУзлыОткуда взяты
3неотрицательное (оно же нат), целое, вес (оно же стоимость), сотых, тысячных, тип функцииспецификация, раздел «Типы»
12суммы «Продолжение» с четырьмя вариантами, «Отклик», шесть групп порученийспецификация, раздел «Ввод-вывод»
13сумма «Действие», три стратегии надзораконтракт процессов

1. Файл и объявления

Понятий словаря на схеме: 14. Узлов сверх словаря: 0. Ссылок и подписей: 1.

Файл и объявлениямодульэкспортируетиспользуеттолькопримечаниетипобъектфункцияутверждениетеоремапланпроцесснадзорпрогонкатегория, функтор,моноид, монадаслои 14–16
Файл и объявления

2. Свои типы: сумма и запись

Понятий словаря на схеме: 7. Узлов сверх словаря: 0. Ссылок и подписей: 6.

Свои типы: сумма и записьтипслой 1этовариантсодержитслой 10полеобъектслой 1вложен объектявляетсяиногда являетсясписокслой 3разборслой 5записьсслой 7
Свои типы: сумма и запись

3. Готовые типы и значения

Понятий словаря на схеме: 12. Узлов сверх словаря: 6. Ссылок и подписей: 1.

Готовые типы и значениятип значениячислострокапризнакничтосписоклюбоефункция из … в …деньгидатанеотрицательное, натцелоевес, стоимостьсотыхтысячныхданетсписок изпустой список
Готовые типы и значения

Типы неотрицательное, целое, вес, сотых, тысячных и запись типа функции в словарь не входят: словарь печатается из таблицы слов, а эти имена разбираются в позиции типа. На схеме они стоят узлами сверх словаря.

4. Функция

Понятий словаря на схеме: 11. Узлов сверх словаря: 0. Ссылок и подписей: 2.

Функцияфункцияслой 1тотальнаяпринимаетвозвращаеттребуетубываетобеспечиваетпримертело функциидля всехрезультатданоожидается
Функция

5. Тело: разбор

Понятий словаря на схеме: 6. Узлов сверх словаря: 0. Ссылок и подписей: 3.

Тело: разбортело функцииразборслучайвариантслой 2пустоголова и хвостлюбоеслой 3както
Тело: разбор

Индукция в доказательстве цепляется к этой форме. Образцов пять: вариант суммы, пусто, голова и хвост, любое и связывание поля словом как.

6. Тело: если, свёртка, пусть

Понятий словаря на схеме: 5. Узлов сверх словаря: 0. Ссылок и подписей: 4.

Тело: если, свёртка, пустьтело функцииеслисвёрткапустьтослой 5иначеначиная скакслой 5равенслой 8
Тело: если, свёртка, пусть

7. Вызов и связки

Понятий словаря на схеме: 8. Узлов сверх словаря: 0. Ссылок и подписей: 7.

Вызов и связкивыражениевызов «Имя»отизаписьслой 2сотфильтроватьслой 9гдеразделитьслой 10поэлементслой 9в, кдля всехслой 4изу
Вызов и связки

8. Арифметика, сравнения, логика

Понятий словаря на схеме: 15. Узлов сверх словаря: 0. Ссылок и подписей: 6.

Арифметика, сравнения, логикадва числаплюсминусумножить наделить наостаток отпроцентовчислодва значенияравенне равенбольшеменьшене большене меньшепризнакпризнакии притомилинепризнак
Арифметика, сравнения, логика

9. Формы над списком

Понятий словаря на схеме: 8. Узлов сверх словаря: 0. Ссылок и подписей: 5.

Формы над спискомсписокотобразитьотфильтроватьдобавитьприписатьхвостголоваэлементдлинасвёрткаслой 6новый списокодин элементчисло
Формы над списком

10. Формы над строкой

Понятий словаря на схеме: 14. Узлов сверх словаря: 0. Ссылок и подписей: 9.

Формы над строкойстрокасимволподстрокаразделитьразложитьна символысодержитначинается ск числук числу или бедакод символахеш256список строксоединитьчисло-кодсимвол по кодулюбое значениек строкестрокасписок строкпризнакчисло«Разобрано» или «Неразобрано»
Формы над строкой

11. Доказательства

Понятий словаря на схеме: 12. Узлов сверх словаря: 0. Ссылок и подписей: 10.

Доказательстваутверждениеслой 1для всехслой 4таких чтоутверждаемтеоремаслой 1данослой 4есть такойа именноиндукция послучайслой 5обоснование шагапо свойствупо примерупо предположениюпо законуследовательноследуетследовательно доказанообеспечиваетслой 4примерслой 4требуетслой 4законслой 16
Доказательства

12. Планы и поручения

Понятий словаря на схеме: 3. Узлов сверх словаря: 12. Ссылок и подписей: 4.

Планы и порученияпланслой 1состояниеначинает собрабатываетсвоя сумма: ход планафункция без доводовфункция: ход и отклик«Отклик»: 21 вид«Продолжение»«Сделать» поручение:их 23 вида«Конец работы»«Провал»«Не проверено»файл и каталог: 7сеть и соединение: 7чужая программа: 2экран и клавиши: 3время и случай: 2среда и доводы: 2
Планы и поручения

Имена в ёлочках — словарь ввода-вывода: три суммы, которые компилятор приписывает программе с планом. В словарь языка они не входят. Числа видов сняты 27 сентября 2026 с flang/self/parser.flang, функции «Варианты поручения», «Варианты отклика», «Варианты продолжения».

13. Процессы и надзор

Понятий словаря на схеме: 5. Узлов сверх словаря: 4. Ссылок и подписей: 9.

Процессы и надзорпроцессслой 1состояниеслой 12начинает сслой 12принимаетслой 4обрабатываетслой 12с запасомс ящиком«Действие»надзорслой 1стратегияпорог отказов«перезапустить»«остановить»«передать выше»прогонслой 1семяданослой 4ожидаетсяслой 4
Процессы и надзор

flang check на программе с процессами отвечает кодом 2: разбор, типы, завершаемость и примеры проходят, а правила самих объявлений двоичный компилятор не судит и говорит об этом словами.

14. Категория и морфизмы

Понятий словаря на схеме: 13. Узлов сверх словаря: 0. Ссылок и подписей: 3.

Категория и морфизмыкатегорияморфизмобъектслой 1изслой 7даётзаконслой 16послеединицацепочкасначалазатемизоморфизмпрямой морфизмобратный морфизмвложениепересечение
Категория и морфизмы

Программа с этими объявлениями тоже получает от flang check код 2, по той же причине.

15. Функторы

Понятий словаря на схеме: 7. Узлов сверх словаря: 0. Ссылок и подписей: 0.

Функторыфункторотображается вотображается в полеотображается в морфизмбифункторобъектыморфизмы
Функторы

16. Моноид и монада

Понятий словаря на схеме: 10. Узлов сверх словаря: 0. Ссылок и подписей: 2.

Моноид и монадамоноидносительоперацияединица: значениеносителяобратный элементзаконсвойствомонадавозвратсоединениев монадепустьслой 6
Моноид и монада

17. Наследие прежней поверхности

Понятий словаря на схеме: 6. Узлов сверх словаря: 0. Ссылок и подписей: 1.

Наследие прежней поверхностипрежняя поверхностьутилитаправилоимеетв данныхнайти гдепо морфизму
Наследие прежней поверхности

Эти слова разбираются, но программу из них сегодня не составить. В новом коде их не пишут.

Дальше