flang the compiler proves your program cannot hang 0.7.24 GitHub Русский

Map of the language constructs

Every word of the language is a node. A solid arrow means "the second is written inside the first". A dashed arrow means "the first gives the second" or "the first refers to the second". Which construct to take for which action is on the page Which construct to use when.

How to read it

NodeWhat it means
a filled rectanglea concept of the glossary; it stands on the map exactly once
a rounded rectanglea construct that the glossary does not have
an oval marked "layer N"a reference to a concept drawn in layer N
an oval without a marka label: what goes in or what comes out

A filled rectangle carries two spellings: the Russian word and the English one. Both are the same word of the language on two writing surfaces.

Compared with the glossary

The glossary holds 150 concepts. The map holds 156 glossary concepts, each of them once; there is no difference. Beyond the glossary the map has 22 nodes: constructs that the specification has and the glossary does not. There are 17 layers.

Taken on 27 September 2026 with the binary 0.7.22. The glossary concepts were counted with the command below. The nodes of the map were counted from the text of the diagrams of this page: for a glossary concept the number of the node is the number of its row in the glossary.

grep -c '^| `' docs/glossary.md
LayerWhat is in itGlossary conceptsNodes beyond the glossary
1File and declarations140
2Own types: sum and record70
3Built-in types and values126
4Function110
5Body: match60
6Body: if, fold, let50
7Call and connectives80
8Arithmetic, comparison, logic150
9Forms over a list80
10Forms over a string140
11Proofs120
12Plans and orders312
13Processes and supervision54
14Category and morphisms130
15Functors70
16Monoid and monad100
17Legacy surface60
total15622

The nodes beyond the glossary, by name:

LayerNodesWhere they come from
3неотрицательное (also нат), целое, вес (also стоимость), сотых, тысячных, the function typethe specification, section «Типы»
12the sums «Продолжение» with four variants, «Отклик», six groups of ordersthe specification, section «Ввод-вывод»
13the sum «Действие», three supervision strategiesthe process contract

1. File and declarations

Glossary concepts in the diagram: 14. Nodes beyond the glossary: 0. References and labels: 1.

File and declarationsмодульmoduleэкспортируетexportsиспользуетusesтолькоonlyпримечаниеnoteтипtypeобъектobjectфункцияfunctionутверждениеpropositionтеоремаtheoremпланplanпроцессprocessнадзорsupervisionпрогонruncategory, functor, monoid,monadlayers 14–16
File and declarations

2. Own types: sum and record

Glossary concepts in the diagram: 7. Nodes beyond the glossary: 0. References and labels: 6.

Own types: sum and recordтип · typelayer 1этовариантvariantсодержит · containslayer 10полеfieldобъект · objectlayer 1вложен объектnested objectявляетсяisиногда являетсяmay beсписок · listlayer 3разбор · matchlayer 5записьrecordс · withlayer 7
Own types: sum and record

3. Built-in types and values

Glossary concepts in the diagram: 12. Nodes beyond the glossary: 6. References and labels: 1.

Built-in types and valuestype of a valueчислоnumberстрокаstringпризнакbooleanничтоnullсписокlistлюбоеanyфункция из … в …function typeденьгиmoneyдатаdateнеотрицательное, натnon-negativeцелоеintegerвес, стоимостьweight, costсотыхhundredthsтысячныхthousandthsдаtrueнетfalseсписок изlist ofпустой списокempty list
Built-in types and values

The types неотрицательное, целое, вес, сотых, тысячных and the function type are not in the glossary: the glossary is printed from the table of words, and these names are read in the position of a type. In the diagram they are nodes beyond the glossary.

4. Function

Glossary concepts in the diagram: 11. Nodes beyond the glossary: 0. References and labels: 2.

Functionфункция · functionlayer 1тотальнаяtotalпринимаетacceptsвозвращаетreturnsтребуетrequiresубываетdecreasesобеспечиваетensuresпримерexamplefunction bodyдля всехfor allрезультатresultданоgivenожидаетсяexpected
Function

5. Body: match

Glossary concepts in the diagram: 6. Nodes beyond the glossary: 0. References and labels: 3.

Body: matchfunction bodyразборmatchслучайcaseвариант · variantlayer 2пустоemptyголова и хвостhead and tailлюбое · anylayer 3какasтоthen
Body: match

Induction in a proof attaches to this form. There are five patterns: a variant of a sum, пусто, голова и хвост, любое, and binding a field with the word как.

6. Body: if, fold, let

Glossary concepts in the diagram: 5. Nodes beyond the glossary: 0. References and labels: 4.

Body: if, fold, letfunction bodyеслиifсвёрткаfoldпустьletто · thenlayer 5иначеelseначиная сstarting withкак · aslayer 5равен · equalslayer 8
Body: if, fold, let

7. Call and connectives

Glossary concepts in the diagram: 8. Nodes beyond the glossary: 0. References and labels: 7.

Call and connectivesexpressioncall of «Name»отofиandзапись · recordlayer 2сwithотфильтровать · filterlayer 9гдеwhereразделить · splitlayer 10поbyэлемент · itemlayer 9в, кtoдля всех · for alllayer 4изfromуat
Call and connectives

8. Arithmetic, comparison, logic

Glossary concepts in the diagram: 15. Nodes beyond the glossary: 0. References and labels: 6.

Arithmetic, comparison, logictwo numbersплюсplusминусminusумножить наtimesделить наdivided byостаток отmoduloпроцентовpercentnumbertwo valuesравенequalsне равенis not equal toбольшеis greater thanменьшеis less thanне большеis at mostне меньшеis at leastflagflagsи притомand alsoилиorнеnotflag
Arithmetic, comparison, logic

9. Forms over a list

Glossary concepts in the diagram: 8. Nodes beyond the glossary: 0. References and labels: 5.

Forms over a listlistотобразитьmapотфильтроватьfilterдобавитьaddприписатьprependхвостtailголоваheadэлементitemдлинаlengthсвёртка · foldlayer 6new listone itemnumber
Forms over a list

10. Forms over a string

Glossary concepts in the diagram: 14. Nodes beyond the glossary: 0. References and labels: 9.

Forms over a stringstringсимволcharподстрокаsubstringразделитьsplitразложитьdecomposeна символыinto charactersсодержитcontainsначинается сbegins withк числуto numberк числу или бедаto number or failureкод символаcharacter codeхеш256hash256list of stringsсоединитьjoincode numberсимвол по кодуcharacter by codeany valueк строкеto textstringlist of stringsflagnumberparsed or not parsed
Forms over a string

11. Proofs

Glossary concepts in the diagram: 12. Nodes beyond the glossary: 0. References and labels: 10.

Proofsутверждение · propositionlayer 1для всех · for alllayer 4таких чтоsuch thatутверждаемclaimтеорема · theoremlayer 1дано · givenlayer 4есть такойthere isа именноnamelyиндукция поinduction onслучай · caselayer 5justification of a stepпо свойствуby propertyпо примеруby exampleпо предположениюby hypothesisпо законуunder lawследовательноthereforeследуетfollowsследовательно доказаноtherefore provedобеспечивает · ensureslayer 4пример · examplelayer 4требует · requireslayer 4закон · lawlayer 16
Proofs

12. Plans and orders

Glossary concepts in the diagram: 3. Nodes beyond the glossary: 12. References and labels: 4.

Plans and ordersплан · planlayer 1состояниеstateначинает сstarts withобрабатываетhandlesown sum: plan statefunction withoutargumentsfunction: state and reply«Отклик»: 21 видreply: 21 kinds«Продолжение»continuation«Сделать» поручение:их 23 видаdo an order:23 kinds«Конец работы»finished«Провал»failed«Не проверено»not checkedфайл и каталог: 7file and directory: 7сеть и соединение: 7network and connection: 7чужая программа: 2child program: 2экран и клавиши: 3screen and keys: 3время и случай: 2clock and random: 2среда и доводы: 2environment andarguments: 2
Plans and orders

The names in guillemets are the input-output vocabulary: three sums that the compiler adds to a program with a plan. They are not in the glossary. The numbers of kinds were taken on 27 September 2026 from flang/self/parser.flang, the functions «Варианты поручения», «Варианты отклика», «Варианты продолжения».

13. Processes and supervision

Glossary concepts in the diagram: 5. Nodes beyond the glossary: 4. References and labels: 9.

Processes and supervisionпроцесс · processlayer 1состояние · statelayer 12начинает с · starts withlayer 12принимает · acceptslayer 4обрабатывает · handleslayer 12с запасомwith budgetс ящикомwith mailbox«Действие»actionнадзор · supervisionlayer 1стратегияstrategyпорог отказовfailure threshold«перезапустить»restart«остановить»stop«передать выше»pass upwardпрогон · runlayer 1семяseedдано · givenlayer 4ожидается · expectedlayer 4
Processes and supervision

flang check on a program with processes answers with code 2: parsing, types, termination and examples pass, while the rules of the declarations themselves are not judged by the binary compiler, which says so in words.

14. Category and morphisms

Glossary concepts in the diagram: 13. Nodes beyond the glossary: 0. References and labels: 3.

Category and morphismsкатегорияcategoryморфизмmorphismобъект · objectlayer 1из · fromlayer 7даётgivesзакон · lawlayer 16послеafterединицаidentityцепочкаchainсначалаfirstзатемnextизоморфизмisomorphismпрямой морфизмforward morphismобратный морфизмinverse morphismвложениеembeddingпересечениеintersection
Category and morphisms

A program with these declarations also gets code 2 from flang check, for the same reason.

15. Functors

Glossary concepts in the diagram: 7. Nodes beyond the glossary: 0. References and labels: 0.

Functorsфункторfunctorотображается вmaps toотображается в полеmaps to fieldотображается в морфизмmaps to morphismбифункторbifunctorобъектыobjectsморфизмыmorphisms
Functors

16. Monoid and monad

Glossary concepts in the diagram: 10. Nodes beyond the glossary: 0. References and labels: 2.

Monoid and monadмоноидmonoidносительcarrierоперацияoperationunit: a value of the carrierобратный элементinverse elementзаконlawсвойствоpropertyмонадаmonadвозвратreturnсоединениеflattenв монадеin monadпусть · letlayer 6
Monoid and monad

17. Legacy surface

Glossary concepts in the diagram: 6. Nodes beyond the glossary: 0. References and labels: 1.

Legacy surfacelegacy surfaceутилитаutilityправилоruleимеетhasв данныхin dataнайти гдеfind whereпо морфизмуby morphism
Legacy surface

These words are parsed, but no program can be made of them today. They are not written in new code.

Next