Skip to content

Синтаксис ​

Символы языка ​

СимволЗначение
~Комментарий до конца строки
¤Объявление переменной
§Определение функции
λАнонимная функция / замыкание
»Печать
⟦ ⟧Блок кода
? / ¿Если / иначе
@Пока (while)
#Для (for i = a .. b)
⇶Для каждого (foreach)
^Вернуть
↤Отдать значение (генератор)
‼ ⁇ ⌦try / catch / finally
⊕Импорт модуля
⊘ / ↻break / continue
≡Assert
☑ / ☐ / ∅true / false / null
⟪ ⟫Словарь
‡Класс
⋔Метод класса
⇢Создание экземпляра
†Наследование
⚡Асинхронная функция
⏸Await

Переменные ​

yl
¤ x = 5
¤ имя = "Аня"
¤ флаг = ☑
¤ пусто = ∅
¤ числа = [1, 2, 3]
¤ человек = ⟪"имя": "Аня", "возраст": 25⟫

С типами:

yl
¤ x :int = 5
¤ имя :str = "Аня"
¤ флаг :bool = ☑
¤ список :arr = [1, 2, 3]

Типы: int, float, str, bool, arr, fn, obj, null, any.

Условия ​

yl
? x > 5 ⟦
    » "больше пяти"
⟧ ¿ ⟦
    » "не больше"
⟧

Циклы ​

yl
~ while
@ i < 10 ⟦
    » i
    i = i + 1
⟧

~ for
# i = 0 .. 10 ⟦
    » i
⟧

~ foreach
⇶ x = [1, 2, 3] ⟦
    » x
⟧

Функции ​

yl
§ add(a, b) ⟦
    ^ a + b
⟧

§ sqrt_newton(x :float) :float ⟦
    ? x <= 0 ⟦ ^ 0 ⟧
    ¤ g = x / 2
    # i = 0 .. 10 ⟦
        g = (g + x / g) / 2
    ⟧
    ^ g
⟧

Замыкания ​

yl
¤ удвой = λ (x) ⟦ ^ x * 2 ⟧

» удвой(21)   ~ 42

Деструктуризация ​

yl
¤ [a, b, c] = [1, 2, 3]
¤ ⟪"x", "y"⟫ = ⟪"x": 10, "y": 20⟫

Классы ​

yl
‡ Животное ⟦
    ⋔ init(имя :str) ⟦
        this.имя = имя
    ⟧
    ⋔ голос() ⟦
        ^ "..."
    ⟧
⟧

‡ Собака † Животное ⟦
    ⋔ голос() ⟦ ^ "Гав!" ⟧
⟧

¤ р = ⇢ Собака("Рекс")
» р.имя + " → " + р.голос()

Генераторы ​

yl
§ чётные(n) ⟦
    # i = 0 .. n ⟦
        ? even(i) ⟦ ↤ i ⟧
    ⟧
⟧

⇶ x = чётные(10) ⟦
    » "чётное:", x
⟧

Генераторы реализованы на PHP Fibers.

Асинхронность ​

yl
⚡ § долго(x) ⟦
    ^ x * 2
⟧

¤ t = долго(21)
» ⏸ t   ~ 42

Обработка ошибок ​

yl
‼ ⟦
    ¤ r = 10 / 0
⟧ ⁇ e ⟦
    » "Поймали:", e
⟧ ⌦ ⟦
    » "finally выполнился"
⟧

Ошибка выводит номер строки: Поймали: [строка 1] Деление на ноль.

Модули ​

yl
⊕ "std/math.yl" as m
» m.квадрат(6)   ~ 36
» m.PI           ~ 3.14159

Комментарии и точки с запятой ​

yl
~ это комментарий

¤ x = 5;   ~ точка с запятой допустима, но не нужна
¤ y = 10;

Сделано на PHP. Лицензия MIT.