Docs
Structs
% shape, @ members, method receiver.
Forms
% user {
$ name
~ visits = 0
$ greet = () {
^ "hi {.name}"
}
}
@ user {
$ label = () {
^ "{.name}#{.visits}"
}
}
$ u = user { name: "Ada", visits: 0 }
u.greet()
u.label()Rules
One % per struct_name. @ adds members (other files ok). Members use $ / ~ / #. Method call v.m() binds receiver ..
Fields and defaults
A member without an initializer must be supplied by the literal. A default initializer fills an omitted field. Use ~ value.field = expr or ~ .field = expr to update a mutable field; immutable fields reject writes.
Receiver returns
A plain method that reaches the end without an explicit return yields its receiver, like ^ .. This enables method chains. Free functions and result- or option-shaped methods do not receive that fall-through behavior.