// Simple Counter for Browser // Compile with: lux compile examples/web/counter.lux --target js -o examples/web/counter.js // ============================================================================ // Model // ============================================================================ type Model = | Counter(Int) fn getCount(m: Model): Int = match m { Counter(n) => n } fn init(): Model = Counter(0) // ============================================================================ // Messages // ============================================================================ type Msg = | Increment | Decrement | Reset // ============================================================================ // Update // ============================================================================ fn update(model: Model, msg: Msg): Model = match msg { Increment => Counter(getCount(model) + 1), Decrement => Counter(getCount(model) - 1), Reset => Counter(0) } // ============================================================================ // View - Returns HTML string for simplicity // ============================================================================ fn view(model: Model): String = { let count = getCount(model) "