#!/usr/bin/env ae
# Typed Pipelines Demo
print("đ Typed Pipelines")
print("=" * 50)
# Type inference
numbers = [1, 2, 3, 4, 5]
doubled = numbers | map(fn(x) => x * 2)
sum_val = doubled | reduce(fn(a, b) => a + b, 0)
print("\nNumbers: ${numbers}")
print("Doubled: ${doubled}")
print("Sum: ${sum_val}")
# Structured data (not text!)
employees = [
{id: 1, name: "Alice", salary: 75000},
{id: 2, name: "Bob", salary: 65000},
{id: 3, name: "Charlie", salary: 85000}
]
high_earners = employees | where(fn(e) => e.salary > 70000)
print("\nHigh earners: ${len(high_earners)}")
# First-class functions
multiply_by = fn(n) => fn(x) => x * n
double_fn = multiply_by(2)
triple_fn = multiply_by(3)
print("\nDoubled [1,2,3]: ${[1,2,3] | map(double_fn)}")
print("Tripled [1,2,3]: ${[1,2,3] | map(triple_fn)}")
# Pattern matching
result_ok = {ok: true, value: 42}
result_err = {ok: false, error: "Division by zero"}
msg1 = match result_ok.ok {
true => "Success: ${result_ok.value}",
false => "Error"
}
print("\n${msg1}")
# Complex pipeline
sales = [
{region: "North", revenue: 1000},
{region: "South", revenue: 1500},
{region: "North", revenue: 2000}
]
by_region = sales | group(fn(s) => s.region)
print("\nRegions: ${len(by_region)} groups")
print("\n⨠Typed pipelines demonstrated!")
print("Type-safe functional programming in a shell!")