// Demonstrating type classes (traits) in Lux // // Expected output: // RGB color: rgb(255,128,0) // Red color: red // Green color: green // Define a simple Printable trait trait Printable { fn format(value: Int): String } // Implement Printable impl Printable for Int { fn format(value: Int): String = "Number: " + toString(value) } // A Color type with pattern matching type Color = | Red | Green | Blue | RGB(Int, Int, Int) fn colorName(c: Color): String = match c { Red => "red", Green => "green", Blue => "blue", RGB(r, g, b) => "rgb(" + toString(r) + "," + toString(g) + "," + toString(b) + ")" } // Test let myColor = RGB(255, 128, 0) let redColor = Red let greenColor = Green // Print results fn printResults(): Unit with {Console} = { Console.print("RGB color: " + colorName(myColor)) Console.print("Red color: " + colorName(redColor)) Console.print("Green color: " + colorName(greenColor)) } let output = run printResults() with {}