@@ -80,8 +80,53 @@ switch asNullable->Nullable.toOption {
8080*/
8181external make : 'a => t <'a > = "%identity"
8282
83+ /**
84+ `equal(a, b, eq)` checks if `a` and `b` are equal.
85+ If both are `Nullable.Value`, it will use function `eq` to check if the values are equal.
86+
87+ ## Examples
88+ ```rescript
89+ let a = Nullable.make(1)
90+ let b = Nullable.null
91+ let c = Nullable.undefined
92+ let d = Nullable.make(2)
93+
94+ Nullable.equal(a, b, Int.equal) == false
95+ Nullable.equal(a, c, Int.equal) == false
96+ Nullable.equal(a, d, Int.equal) == false
97+ Nullable.equal(Nullable.null, Nullable.null, Int.equal) == true
98+ Nullable.equal(Nullable.undefined, Nullable.undefined, Int.equal) == true
99+ Nullable.equal(Nullable.null, Nullable.undefined, Int.equal) == false
100+ ```
101+ */
83102let equal : (t <'a >, t <'b >, ('a , 'b ) => bool ) => bool
84103
104+ /**
105+ `compare(a, b, cmp)` compares `a` and `b`.
106+ If both are `Nullable.Value`, it will use function `cmp` to compare the values.
107+
108+ ## Examples
109+ ```rescript
110+ let a = Nullable.make(1)
111+ let b = Nullable.null
112+ let c = Nullable.undefined
113+ let d = Nullable.make(2)
114+
115+ // A value is greater than null and undefined
116+ Nullable.compare(a, b, Int.compare) == Stdlib_Ordering.greater
117+ Nullable.compare(a, c, Int.compare) == Stdlib_Ordering.greater
118+ // null and undefined are less than a value
119+ Nullable.compare(b, a, Int.compare) == Stdlib_Ordering.less
120+ Nullable.compare(c, a, Int.compare) == Stdlib_Ordering.less
121+ // null is equal to null, undefined is equal to undefined
122+ Nullable.compare(Nullable.null, Nullable.null, Int.compare) == Stdlib_Ordering.equal
123+ Nullable.compare(Nullable.undefined, Nullable.undefined, Int.compare) == Stdlib_Ordering.equal
124+ // null is less than undefined
125+ Nullable.compare(Nullable.null, Nullable.undefined, Int.compare) == Stdlib_Ordering.less
126+ // The compare function is used if both are `Nullable.Value`
127+ Nullable.compare(a, d, Int.compare) == Stdlib_Ordering.less
128+ ```
129+ */
85130let compare : (t <'a >, t <'b >, ('a , 'b ) => Stdlib_Ordering .t ) => Stdlib_Ordering .t
86131
87132/**
0 commit comments