From 34c9ec3712c8bf55493fad8896bdf70f7b8bc35b Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Thu, 3 Jul 2025 16:06:02 +0200 Subject: [PATCH 1/2] add remaining docstrings for nullable --- runtime/Stdlib_Nullable.resi | 45 ++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/runtime/Stdlib_Nullable.resi b/runtime/Stdlib_Nullable.resi index 002f482e51..84b31d17bc 100644 --- a/runtime/Stdlib_Nullable.resi +++ b/runtime/Stdlib_Nullable.resi @@ -80,8 +80,53 @@ switch asNullable->Nullable.toOption { */ external make: 'a => t<'a> = "%identity" +/** +`equal(a, b, eq)` checks if `a` and `b` are equal. +If both are `Nullable.Value`, it will use function `eq` to check if the values are equal. + +## Examples +```rescript +let a = Nullable.make(1) +let b = Nullable.null +let c = Nullable.undefined +let d = Nullable.make(2) + +Nullable.equal(a, b, Int.equal) == false +Nullable.equal(a, c, Int.equal) == false +Nullable.equal(a, d, Int.equal) == false +Nullable.equal(Nullable.null, Nullable.null, Int.equal) == true +Nullable.equal(Nullable.undefined, Nullable.undefined, Int.equal) == true +Nullable.equal(Nullable.null, Nullable.undefined, Int.equal) == false +``` + */ let equal: (t<'a>, t<'b>, ('a, 'b) => bool) => bool +/** +`compare(a, b, cmp)` compares `a` and `b`. +If both are `Nullable.Value`, it will use function `cmp` to compare the values. + +## Examples +```rescript +let a = Nullable.make(1) +let b = Nullable.null +let c = Nullable.undefined +let d = Nullable.make(2) + +// A value is greater than null and undefined +Nullable.compare(a, b, Int.compare) == Stdlib_Ordering.greater +Nullable.compare(a, c, Int.compare) == Stdlib_Ordering.greater +// null and undefined are less than a value +Nullable.compare(b, a, Int.compare) == Stdlib_Ordering.less +Nullable.compare(c, a, Int.compare) == Stdlib_Ordering.less +// null is equal to null, undefined is equal to undefined +Nullable.compare(Nullable.null, Nullable.null, Int.compare) == Stdlib_Ordering.equal +Nullable.compare(Nullable.undefined, Nullable.undefined, Int.compare) == Stdlib_Ordering.equal +// null is less than undefined +Nullable.compare(Nullable.null, Nullable.undefined, Int.compare) == Stdlib_Ordering.less +// The compare function is used if both are `Nullable.Value` +Nullable.compare(a, d, Int.compare) == Stdlib_Ordering.less +``` +*/ let compare: (t<'a>, t<'b>, ('a, 'b) => Stdlib_Ordering.t) => Stdlib_Ordering.t /** From 9149aca2c651fbbfe2328a2fcade57c4f6dcfeca Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Thu, 3 Jul 2025 16:11:14 +0200 Subject: [PATCH 2/2] fix test --- runtime/Stdlib_Nullable.resi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/Stdlib_Nullable.resi b/runtime/Stdlib_Nullable.resi index 84b31d17bc..8a8da75624 100644 --- a/runtime/Stdlib_Nullable.resi +++ b/runtime/Stdlib_Nullable.resi @@ -96,7 +96,7 @@ Nullable.equal(a, c, Int.equal) == false Nullable.equal(a, d, Int.equal) == false Nullable.equal(Nullable.null, Nullable.null, Int.equal) == true Nullable.equal(Nullable.undefined, Nullable.undefined, Int.equal) == true -Nullable.equal(Nullable.null, Nullable.undefined, Int.equal) == false +Nullable.equal(Nullable.null, Nullable.undefined, Int.equal) == true ``` */ let equal: (t<'a>, t<'b>, ('a, 'b) => bool) => bool