Records
Named fields, updates that keep the rest, destructuring.
main (print)
<point: x int, y int>
main()
p = <point: x = 1, y = 2>
# Read a field with a dot.
sum = p.x + p.y
# An update starts with *, keeps the other fields, and consumes p.
q = <*p, y = 10>
# A typed field transform sees the old value.
r = <*q, x int: x + 100>
# Destructure in declaration order.
x, y = r
print.line("{sum} {x} {y}")3 101 10