Data Transform
Source: examples/data_transform.ion in the repo.
// Data transformation pipeline
let users = [ #{name: "Alice", age: 30, role: "admin"}, #{name: "Bob", age: 25, role: "user"}, #{name: "Charlie", age: 35, role: "admin"}, #{name: "Diana", age: 28, role: "user"}, #{name: "Eve", age: 22, role: "admin"},];
// Filter admins and format their nameslet admin_names = users .filter(|u| u.role == "admin") .map(|u| u.name);io::println(f"Admins: {admin_names}");
// Average age using reducelet total_age = users.map(|u| u.age).reduce(|a, b| a + b);let avg_age = total_age / users.len();io::println(f"Average age: {avg_age}");
// Unique roles using setlet unique_roles = set(users.map(|u| u.role));io::println(f"Roles: {unique_roles}");
// Age statistics using min/max/sumlet ages = users.map(|u| u.age);io::println(f"Youngest: {ages.min()}");io::println(f"Oldest: {ages.max()}");io::println(f"Total age: {ages.sum()}");
// Chunk users into groups of 2let groups = users.chunk(2);for (i, group) in enumerate(groups) { let names = group.map(|u| u.name).join(", "); io::println(f"Group {i + 1}: {names}");}
// Sort by agelet by_age = users .sort_by(|a, b| a.age - b.age) .map(|u| f"{u.name} ({u.age})");io::println(f"By age: {by_age.join(", ")}");
// Create summary reportlet report = #{ total_users: users.len(), admin_count: users.filter(|u| u.role == "admin").len(), average_age: avg_age, oldest: ages.max(), youngest: ages.min(),};io::println(f"Report: {json::pretty(report)}");