Операторы циклов
Для записи циклов используются оператор <->, который ставится между условием цикла (проверкой логического выражения) и телом цикла. Условие цикла записывается в квадратных скобках и в зависимости от взаимного расположения цикл может быть с предусловием (while) или постусловием (dowhile):
    [условие while] <-> {
        тело цикла while
    };
    {
        тело цикла do while
    } <-> [условие do while];
Цикл с предусловием (while) поддерживает конструкцию else, которая выполняется, если условие входа в цикл не было выполнено.
Внимание! Это поведение отличается от аналогичных конструкций в языке Python, у которого секция else выполняется всегда, кроме прерывания цикла по break.
Ветка else у оператора цикла записывается так же как и ветка иначе в условном операторе, т.е.
    [ cond ] <-> {
        ...
    },[...] --> {
        ...
    };
Или тоже самое, но с использованием макросов из модуля dsl:
    @while(cond) {
        ...
    } @else {
        ... # Выполнится, только если cond будет false при входе в цикл
    };
Пример реализации цикла foreach для суммирования всех элементов словаря (или одномерного тензора) с использованием оператора раскрытия списка:
    summa := 0;
    dict := (1,2,3,4,5,);
    [ dict ] <-> { # Условие цикла, пока есть данные
        # Результат оператора распаковка словаря - первый элемент перемещается в item
        item, dict := ... dict; 
        summa += item; # Вычисление суммы всех элементов словаря
    };