Examples

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