Order
The convention is to name the module alias after the file name it is defined in:
import Order "mo:base/Order";
On this page
Function isLess
Function isEqual
Function isGreater
Function equal
Public Type
The Order variant type is used to represent three possible outcomes when comparing the order two values.
type Order = {
#less;
#equal;
#greater;
};
When comparing the order of two values, we could either return:
#lesswhen the first value is less than the second value.#equalwhen both values are equal.#greaterwhen the first value is greater than the second value.
Some types are naturally ordered like number types Nat and Int. But we may define an order for any type, even types for which there is no obvious natural order.
type Color = {
#Red;
#Blue;
};
func sortColor(c1 : Color, c2 : Color) : Order {
switch ((c1, c2)) {
case ((#Red, #Blue)) { #greater };
case ((#Red, #Red)) { #equal };
case ((#Blue, #Blue)) { #equal };
case ((#Blue, #Red)) { #less };
};
};
Here we define an order for our Color variant by defining a function that compares two values of Color and returns an Order. It treats #Red to be #greater than #Blue.
Order.isLess
func isLess(order : Order) : Bool
import Order "mo:base/Order";
let order : Order.Order = #less;
Order.isLess(order);
Order.isEqual
func isEqual(order : Order) : Bool
import Order "mo:base/Order";
let order : Order.Order = #less;
Order.isEqual(order);
Order.isGreater
func isGreater(order : Order) : Bool
import Order "mo:base/Order";
let order : Order.Order = #less;
Order.isGreater(order);
Order.equal
func equal(o1 : Order, o2 : Order) : Bool
import Order "mo:base/Order";
let icpToday : Order.Order = #less;
let icpTomorrow : Order.Order = #greater;
Order.equal(icpToday, icpTomorrow);