diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gleam/order.gleam | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/gleam/order.gleam b/src/gleam/order.gleam index 77ad033..12ce011 100644 --- a/src/gleam/order.gleam +++ b/src/gleam/order.gleam @@ -18,21 +18,21 @@ pub type Order { /// ## Examples /// /// ```gleam -/// > reverse(Lt) +/// > negate(Lt) /// Gt /// ``` /// /// ```gleam -/// > reverse(Eq) +/// > negate(Eq) /// Eq /// ``` /// /// ```gleam -/// > reverse(Lt) +/// > negate(Lt) /// Gt /// ``` /// -pub fn reverse(order: Order) -> Order { +pub fn negate(order: Order) -> Order { case order { Lt -> Gt Eq -> Eq @@ -117,3 +117,17 @@ pub fn min(a: Order, b: Order) -> Order { _, _ -> b } } + +/// Inverts an ordering function, so less-than becomes greater-than and greater-than +/// becomes less-than. +/// +/// ## Examples +/// +/// ```gleam +/// > list.sort([1, 5, 4], by: reverse(int.compare)) +/// [5, 4, 1] +/// ``` +/// +pub fn reverse(orderer: fn(a, a) -> Order) -> fn(a, a) -> Order { + fn(a, b) { orderer(b, a) } +} |