type Model = | Counter(Int) fn getCount(m: Model): Int = match m { Counter(n) => n, } fn init(): Model = Counter(0) type Msg = | Increment | Decrement | Reset fn update(model: Model, msg: Msg): Model = match msg { Increment => Counter(getCount(model) + 1), Decrement => Counter(getCount(model) - 1), Reset => Counter(0), } fn view(model: Model): String = { let count = getCount(model) "
" + "

Lux Counter

" + "
" + toString(count) + "
" + "
" + "" + "" + "" + "
" + "
" } fn luxInit(): Model = init() fn luxUpdate(model: Model, msgName: String): Model = match msgName { "Increment" => update(model, Increment), "Decrement" => update(model, Decrement), "Reset" => update(model, Reset), _ => model, } fn luxView(model: Model): String = view(model)