Lua tables can be arrays, maps, objects, modules, and namespaces. Musi records narrow that role to field-shaped data so behavior does not disappear into table convention.
local dog = { name = "Miso", age = 4 }let Pet := data {
name : String;
age : Int;
};
let dog := {
name := "Miso",
age := 4,
};
dog.name;Reading Tables, Records, and Field Updates from Lua
On the Musi side, Musi records and data variants describe stored shape. Behavior belongs in functions or classes/instances, not inside an object by default. Read the shared example through Lua eyes: keep the useful instinct, then let Musi name shape, behavior, absence, and outside work in separate places.
False friend
Do not read class as object shape. If the page is about a pet, invoice, room, or vehicle, start with fields or variants. For a Lua reader, the trap is letting table shape, missing fields, and behavior conventions blur together; Musi class is not a metatable pattern; records/data hold table-like shape, classes/instances name promised behavior.
When this pays off
Use records when names like owner, age, amount, or route are the point of the value. The Lua instinct still helps here: Keep the Lua habit of using small names and simple values.