@@ -47,8 +47,43 @@ let asNullValue = myStr->Null.make // The compiler now thinks this can be `strin
47
47
*/
48
48
external make : 'a => t <'a > = "%identity"
49
49
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
+ assertEqual(Null.equal(a, b, Int.equal), false)
61
+ assertEqual(Null.equal(a, c, Int.equal), false)
62
+ assertEqual(Null.equal(Null.null, Null.null, Int.equal), true)
63
+ ```
64
+ */
50
65
let equal : (t <'a >, t <'b >, ('a , 'b ) => bool ) => bool
51
66
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
+ assertEqual(Null.compare(a, b, Int.compare), Stdlib_Ordering.greater)
79
+ // A value is less than null
80
+ assertEqual(Null.compare(b, a, Int.compare), Stdlib_Ordering.less)
81
+ // A null is equal to null
82
+ assertEqual(Null.compare(Null.null, Null.null, Int.compare), Stdlib_Ordering.equal)
83
+ // The compare function is used if both are `Null.Value`
84
+ assertEqual(Null.compare(a, c, Int.compare), Stdlib_Ordering.less)
85
+ ```
86
+ */
52
87
let compare : (t <'a >, t <'b >, ('a , 'b ) => Stdlib_Ordering .t ) => Stdlib_Ordering .t
53
88
54
89
/**
0 commit comments