Nat
The convention is to name the module alias after the file name it is defined in:
import Nat "mo:base/Nat";
Conversion
Comparison
Function min
Function max
Function compare
Function equal
Function notEqual
Function less
Function lessOrEqual
Function greater
Function greaterOrEqual
Numerical operations
Function add
Function sub
Careful! Traps if result is a negative number
Function mul
Function div
Function rem
Function pow
Nat.toText
func toText(n : Nat) : Text
The function toText
takes one Nat
argument and returns a Text
value.
import Nat "mo:base/Nat";
let natural : Nat = 10;
Nat.toText(natural);
Nat.min
func min(x : Nat, y : Nat) : Nat
The function min
takes two Nat
arguments and returns the smallest Nat
value.
import Nat "mo:base/Nat";
let a : Nat = 50;
let b : Nat = 20;
Nat.min(a, b);
Nat.max
func max(x : Nat, y : Nat) : Nat
The function max
takes two Nat
arguments and returns the largest Nat
value.
import Nat "mo:base/Nat";
let a : Nat = 50;
let b : Nat = 20;
Nat.max(a, b);
Nat.compare
func compare(x : Nat, y : Nat) : {#less; #equal; #greater}
The function compare
takes two Nat
arguments and returns an Order variant value.
import Nat "mo:base/Nat";
let a : Nat = 50;
let b : Nat = 20;
Nat.compare(a, b);
Nat.equal
func equal(x : Nat, y : Nat) : Bool
The function equal
takes two Nat
arguments and returns a Bool
value. It is equivalent to the ==
relational operator.
import Nat "mo:base/Nat";
let a : Nat = 50;
let b : Nat = 20;
let isEqual = Nat.equal(a, b);
let isEqualAgain = a == b;
Nat.notEqual
func notEqual(x : Nat, y : Nat) : Bool
The function notEqual
takes two Nat
arguments and returns a Bool
value. It is equivalent to the !=
relational operator
import Nat "mo:base/Nat";
let a : Nat = 50;
let b : Nat = 20;
let isNotEqual = Nat.notEqual(a, b);
let notEqual = a != b;
Nat.less
func less(x : Nat, y : Nat) : Bool
The function less
takes two Nat
arguments and returns a Bool
value. It is equivalent to the <
relational operator.
import Nat "mo:base/Nat";
let a : Nat = 50;
let b : Nat = 20;
let isLess = Nat.less(a, b);
let less = a < b;
Nat.lessOrEqual
func lessOrEqual(x : Nat, y : Nat) : Bool
The function lessOrEqual
takes two Nat
arguments and returns a Bool
value. It is equivalent to the <=
relational operator.
import Nat "mo:base/Nat";
let a : Nat = 50;
let b : Nat = 50;
let isLessOrEqual = Nat.lessOrEqual(a, b);
let lessOrEqual = a <= b;
Nat.greater
func greater(x : Nat, y : Nat) : Bool
The function greater
takes two Nat
arguments and returns a Bool
value. It is equivalent to the >
relational operator.
import Nat "mo:base/Nat";
let a : Nat = 50;
let b : Nat = 20;
let isGreater = Nat.greater(a, b);
let greater = a > b;
Nat.greaterOrEqual
func greaterOrEqual(x : Nat, y : Nat) : Bool
The function greaterOrEqual
takes two Nat
arguments and returns a Bool
value. It is equivalent to the >=
relational operator.
import Nat "mo:base/Nat";
let a : Nat = 50;
let b : Nat = 20;
let isGreaterOrEqual = Nat.greaterOrEqual(a, b);
let greaterOrEqual = a >= b;
Nat.add
func add(x : Nat, y : Nat) : Nat
The function add
takes two Nat
arguments and returns a Nat
value. It is equivalent to the +
numeric operator.
import Nat "mo:base/Nat";
let a : Nat = 50;
let b : Nat = 20;
let add = Nat.add(a, b);
let addition = a + b;
Nat.sub
func sub(x : Nat, y : Nat) : Nat
The function sub
takes two Nat
arguments and returns a Nat
value. It is equivalent to the -
numeric operator.
import Nat "mo:base/Nat";
let a : Nat = 50;
let b : Nat = 20;
let subtract = Nat.sub(a, b);
// Result has type `Int` because subtracting two `Nat` may trap due to undeflow
NOTE
Both theNat.sub
function and the-
operator onNat
values may cause a trap if the result is a negative number (underflow).
Nat.mul
func mul(x : Nat, y : Nat) : Nat
The function mul
takes two Nat
arguments and returns a Nat
value. It is equivalent to the *
numeric operator.
import Nat "mo:base/Nat";
let a : Nat = 50;
let b : Nat = 20;
let multiply = Nat.mul(a, b);
let multiplication = a * b;
Nat.div
func div(x : Nat, y : Nat) : Nat
The function div
takes two Nat
arguments and returns a Nat
value. It is equivalent to the /
numeric operator.
import Nat "mo:base/Nat";
let a : Nat = 50;
let b : Nat = 50;
let divide = Nat.div(a, b);
Nat.rem
func rem(x : Nat, y : Nat) : Nat
The function rem
takes two Nat
arguments and returns a Nat
value. It is equivalent to the %
numeric operator.
import Nat "mo:base/Nat";
let a : Nat = 50;
let b : Nat = 50;
let remainder = Nat.rem(a, b);
let remains = a % b;
Nat.pow
func pow(x : Nat, y : Nat) : Nat
The function pow
takes two Nat
arguments and returns a Nat
value. It is equivalent to the **
numeric operator.
import Nat "mo:base/Nat";
let a : Nat = 5;
let b : Nat = 5;
let power = Nat.pow(a, b);
let pow = a ** b;