-- 03: Data transform (terse syntax)
type customer
name: text
email: text
tier: text
spent: number
type summary
name: text
level: text
discount: number
fn classify
spent: number -> text
? spent: 0 == "bronze"
? spent: 500 == "silver"
? spent: 1000 == "gold"
match true
>= spent 1000: "gold"
>= spent 500: "silver"
_: "bronze"
fn summaries
@ classify from self
customers: list customer -> list summary
for c in customers
let level = classify spent: c.spent
let disc = match level
"gold": 20
"silver": 10
"bronze": 5
_: 0
summary
name: c.name,
level: level,
discount: disc