How do I reverse a list in EK9?
← Common Collection Tasks · Ref: Q187
EK9 Lists have a .reverse() method that returns a new reversed list. The original list is unchanged.
REVERSE
Create a new list in reverse order:
reversed <- myList.reverse()
The original list is not modified.
IMMUTABLE BY DEFAULT
Like all EK9 non-mutating operations, reverse() returns a new value. To update the variable, assign the result:
myList :=: myList.reverse()
See Q88 for List operations. See Q120 for sorting.
Example
defines module qa.collectiontasks.reverselist defines program ReverseListDemo() stdout <- Stdout() // === REVERSE === numbers <- [1, 2, 3, 4, 5] reversed <- numbers.reverse() stdout.println(`Original: ${numbers}`) stdout.println(`Reversed: ${reversed}`) // Original is unchanged require numbers <> reversed // === REVERSE STRINGS === names <- ["Alice", "Bob", "Charlie"] reversedNames <- names.reverse() stdout.println(`Names: ${names}`) stdout.println(`Reversed names: ${reversedNames}`) // === DOUBLE REVERSE === doubleReversed <- reversed.reverse() stdout.println(`Double reversed: ${doubleReversed}`) require doubleReversed == numbers // === EMPTY LIST REVERSE === emptyList <- List() of Integer emptyReversed <- emptyList.reverse() stdout.println(`Empty reversed: ${emptyReversed}`) require emptyReversed is empty // === SINGLE ITEM === single <- [42] singleReversed <- single.reverse() stdout.println(`Single reversed: ${singleReversed}`) require single == singleReversed
Common mistakes
E50060 — List does not have a flip() method. The correct method for reversing is reverse(). Calling a non-existent method triggers E50060 — method not resolved. See ek9 -h E50060 for details.
Incorrect:
reversed <- numbers.flip()
Correct:
reversed <- numbers.reverse()
Other ways to ask this
- How do I flip the order of a list in EK9?
- What is the EK9 equivalent of list.reverse()?
- How do I invert the order of elements in a list in EK9?
Coming from another language?
Java: Collections.reverse(list) modifies in place, no built-in immutable reverse. Python: list.reverse() modifies in place, reversed(list) returns iterator, list[::-1] for new reversed list. Rust: vec.reverse() modifies in place, .iter().rev() for lazy reverse. Go: manual loop, no built-in reverse. JavaScript: arr.reverse() modifies in place, [...arr].reverse() for new. Kotlin: list.reversed() returns new list. EK9: list.reverse() returns new list, original unchanged.
Keywords: list, sort, backwards, task, reverse, order, collection, flip, invert