// enum_methods.vr — demonstrates methods defined on enum types enum Color { red green blue } enum Direction { north south east west } // method on Color enum fn (c Color) name() { match c { Color.red { return "red" } Color.green { return "green" } Color.blue { return "blue" } else { return "unknown" } } } // method on Color enum fn (c Color) is_primary() { if c == Color.red or c == Color.green or c == Color.blue { return 1 } return 0 } // method on Direction enum fn (d Direction) opposite() { match d { Direction.north { return Direction.south } Direction.south { return Direction.north } Direction.east { return Direction.west } Direction.west { return Direction.east } else { return d } } } // method on Direction enum fn (d Direction) is_horizontal() { if d == Direction.east or d == Direction.west { return 1 } return 0 } fn main() { // test Color methods let c = Color.red let nm = c.name() assert nm == "red" println("Color.name() = red") let primary = c.is_primary() assert primary == 1 println("Color.is_primary() = 1") // test Direction methods let dir = Direction.north let opp = dir.opposite() assert opp == Direction.south println("Direction.north.opposite() = south") let horizontal = dir.is_horizontal() assert horizontal == 0 println("Direction.north.is_horizontal() = 0") // test with other values let blue = Color.blue assert blue.name() == "blue" assert blue.is_primary() == 1 println("Color.blue methods OK") let east = Direction.east assert east.opposite() == Direction.west assert east.is_horizontal() == 1 println("Direction.east methods OK") println("All enum method assertions passed!") }