# Enums # Enums define a type with multiple possible variants: enum Shape(Circle(radius: Num), Rectangle(width: Num, height: Num), Point): # Use `when` to pattern match an enum: func area(shape: Shape -> Num): when shape is Circle(radius): return Num.PI * radius^2 is Rectangle(width, height): return width * height is Point: return 0 func main(): # You can create instances of an enum: point := Shape.Point # Single member enums display without the field names: circle := Shape.Circle(radius=10) >> circle = Circle(10) # Multi-member enums explicitly list their field names: rect := Shape.Rectangle(width=4, height=5) >> rect = Rectangle(width=4, height=5) >> point:area() = ??? >> rect:area() = ??? >> "My shape is $circle" = ???