Структура
type TextPos = struct
line : u32
char : u32
Структура TextPos содержит два поля типа u32.
let position = TextPos line = 1
char = 8
position это неизменяемая привязка, доступная до конца текущего файла.
let position = TextPos
line = 1
char = 8
Задание значений полей перенесено на новую строку.
let line = 1
let char = 8
let position = TextPos =line =char
Использован короткий синтаксис, так как поля и привязки имеют одинаковые имена.
let position = TextPos 1 8
Поля получают значения позиционно.
let position = TextPos.new
Если все поля структуры являются числовыми, то new инициализирует их нулём.
type TextPos
def left = TextPos line (char - 1)
Структура TextPos открывается, чтобы добавить метод left.
type TextPos
def move_left @mut =
char -= 1
let mut position = TextPos 1 8
position.move_left
Атрибут @mut добавлен к методу move_left, чтобы поля стали доступными для записи. Вызвать такой метод можно только для изменяемой структуры.