Rectangle

type Rectangle =
    inherit Control

    val memory@atom = (width@atom, height@atom)
        |> to_atom
        |> map { w, h ->
            let quad = Quad.create
                up_left = Vector3 0 0 0
                up_right = Vector3 w.as<f32> 0 0
                down_left = Vector3 0 h.as<f32> 0
                down_right = Vector3 w.as<f32> h.as<f32> 0

            MeshMemory.from_quad quad }

Прямоугольник хранит в себе геометрическую форму, созданную исходя из его ширины и высоты.

type Control
    var maybe_drawable : Option<Drawable> = None

Единица упаковки кода называется ящик.

Тип Rectangle определён в ящике control, отвечающем за внутреннюю логику элементов управления. Последний же фрагмент кода находится в ящике drawer, который выводит пользовательский интерфейс на экран и зависит от конкретного отрисовщика, частью которого является Drawable.

type Rectangle
    let ui_material : Material @auto

    val drawable = Drawable
        mesh = Mesh.from_memory memory@atom
        material = ui_material

    maybe_drawable = drawable

Поле ui_material получает значение автоматически благодаря атрибуту @auto.

let ui_material @publish = app.drawer.materials.ui

let rectangle = Rectangle.new

Значение опубликованной привязки ui_material будет передано в конструктор Rectangle.

Именно неявная передача значений это не только вопрос снижения сложности. В других ящиках может находиться код, создающий Rectangle, но ничего не знающий о зависимостях, которые он получил в ящике drawer. Весь этот код продолжит работать, но теперь при вызове будет требовать предварительно опубликованную ui_material.