@@ -47,8 +47,43 @@ let asNullValue = myStr->Null.make // The compiler now thinks this can be `strin
4747*/
4848external make : 'a => t <'a > = "%identity"
4949
50+ /**
51+ `equal(a, b, eq)` checks if `a` and `b` are equal.
52+ If both are `Null.Value`, it will use function `eq` to check if the values are equal.
53+
54+ ## Examples
55+ ```rescript
56+ let a = Null.Value(1)
57+ let b = Null.null
58+ let c = Null.Value(2)
59+
60+ Null.equal(a, b, Int.equal) == false
61+ Null.equal(a, c, Int.equal) == false
62+ Null.equal(Null.null, Null.null, Int.equal) == true
63+ ```
64+ */
5065let equal : (t <'a >, t <'b >, ('a , 'b ) => bool ) => bool
5166
67+ /**
68+ `compare(a, b, cmp)` compares `a` and `b`.
69+ If both are `Null.Value`, it will use function `cmp` to compare the values.
70+
71+ ## Examples
72+ ```rescript
73+ let a = Null.Value(1)
74+ let b = Null.null
75+ let c = Null.Value(2)
76+
77+ // A value is greater than null
78+ Null.compare(a, b, Int.compare) == Stdlib_Ordering.greater
79+ // A value is less than null
80+ Null.compare(b, a, Int.compare) == Stdlib_Ordering.less
81+ // A null is equal to null
82+ Null.compare(Null.null, Null.null, Int.compare) == Stdlib_Ordering.equal
83+ // The compare function is used if both are `Null.Value`
84+ Null.compare(a, c, Int.compare) == Stdlib_Ordering.less
85+ ```
86+ */
5287let compare : (t <'a >, t <'b >, ('a , 'b ) => Stdlib_Ordering .t ) => Stdlib_Ordering .t
5388
5489/**
0 commit comments