// Tuples group values without naming a record; `match` takes them apart.
import std.io.println;
import std.text.number;
def area(size: (int, int)): int {
match size with
| (width, height) -> { return width * height; };
}
def main(): int {
let point: (int, int) = (3, 4);
match point with
| (x, y) -> { println(int_to_text(x * x + y * y)); };
let size: (int, int) = (6, 7);
println(int_to_text(area(size)));
let labeled: (string, bool) = ("ready", true);
match labeled with
| (label, flag) -> { if (flag) { println(label); }; };
return 0;
}// الصفوف تجمع قيما دون تسمية سجل، و`طابق` يفككها.
استورد std.io.println;
استورد std.text.number;
عرف المساحة(الحجم: (عدد, عدد)): عدد {
طابق الحجم مع
| (العرض, الارتفاع) -> { أرجع العرض * الارتفاع; };
}
عرف الرئيسية(): عدد {
دع النقطة: (عدد, عدد) = (3, 4);
طابق النقطة مع
| (س, ص) -> { اطبع_سطر(عدد_إلى_نص(س * س + ص * ص)); };
دع الحجم: (عدد, عدد) = (6, 7);
اطبع_سطر(عدد_إلى_نص(المساحة(الحجم)));
دع الموسوم: (نص, منطقي) = ("جاهز", صواب);
طابق الموسوم مع
| (التسمية, العلم) -> { إذا (العلم) { اطبع_سطر(التسمية); }; };
أرجع 0;
}
Run it
With the interpreter, without compiling:
./build/sultanc run examples/en/data/tuples.snOr compile it to an executable:
./build/sultanc examples/en/data/tuples.sn -o build/example && ./build/example