@@ -99,7 +99,7 @@ module {
9999 // / Space: O(1)
100100 // /
101101 // / *Runtime and space assumes that `equal` runs in O(1) time and space.
102- public func equal< T > (array1 : [var T ], array2 : [var T ], equal : (T , T ) -> Bool ) : Bool {
102+ public func equal< T > (array1 : [var T ], array2 : [var T ], equal : (implicit : ( T , T ) -> Bool ) ) : Bool {
103103 let size1 = array1. size();
104104 let size2 = array2. size();
105105 if (size1 != size2) {
@@ -202,7 +202,7 @@ module {
202202 // /
203203 // / Space: O(size)
204204 // / *Runtime and space assumes that `compare` runs in O(1) time and space.
205- public func sort< T > (array : [var T ], compare : (T , T ) -> Order . Order ) : [var T ] {
205+ public func sort< T > (array : [var T ], compare : (implicit : ( T , T ) -> Order . Order ) ) : [var T ] {
206206 let newArray = clone(array);
207207 sortInPlace(newArray, compare);
208208 newArray
@@ -222,7 +222,7 @@ module {
222222 // /
223223 // / Space: O(size)
224224 // / *Runtime and space assumes that `compare` runs in O(1) time and space.
225- public func sortInPlace< T > (array : [var T ], compare : (T , T ) -> Order . Order ) : () {
225+ public func sortInPlace< T > (array : [var T ], compare : (implicit : ( T , T ) -> Order . Order ) ) : () {
226226 // Stable merge sort in a bottom-up iterative style. Same algorithm as the sort in Buffer.
227227 let size = array. size();
228228 if (size == 0 ) {
@@ -945,7 +945,7 @@ module {
945945 // / Runtime: O(array.size())
946946 // /
947947 // / Space: O(1)
948- public func indexOf< T > (array : [var T ], equal : (T , T ) -> Bool , element : T ) : ?Nat = nextIndexOf< T > (array, equal, element, 0 );
948+ public func indexOf< T > (array : [var T ], equal : (implicit : ( T , T ) -> Bool ) , element : T ) : ?Nat = nextIndexOf< T > (array, equal, element, 0 );
949949
950950 // / Returns the index of the next occurence of `element` in the `array` starting from the `from` index (inclusive).
951951 // /
@@ -963,7 +963,7 @@ module {
963963 // / Runtime: O(array.size())
964964 // /
965965 // / Space: O(1)
966- public func nextIndexOf< T > (array : [var T ], equal : (T , T ) -> Bool , element : T , fromInclusive : Nat ) : ?Nat {
966+ public func nextIndexOf< T > (array : [var T ], equal : (implicit : ( T , T ) -> Bool ) , element : T , fromInclusive : Nat ) : ?Nat {
967967 var index = fromInclusive;
968968 let size = array. size();
969969 while (index < size) {
@@ -991,7 +991,7 @@ module {
991991 // / Runtime: O(array.size())
992992 // /
993993 // / Space: O(1)
994- public func lastIndexOf< T > (array : [var T ], equal : (T , T ) -> Bool , element : T ) : ?Nat = prevIndexOf< T > (array, equal, element, array. size());
994+ public func lastIndexOf< T > (array : [var T ], equal : (implicit : ( T , T ) -> Bool ) , element : T ) : ?Nat = prevIndexOf< T > (array, equal, element, array. size());
995995
996996 // / Returns the index of the previous occurence of `element` in the `array` starting from the `from` index (exclusive).
997997 // /
@@ -1006,7 +1006,7 @@ module {
10061006 // /
10071007 // / Runtime: O(array.size());
10081008 // / Space: O(1);
1009- public func prevIndexOf< T > (array : [var T ], equal : (T , T ) -> Bool , element : T , fromExclusive : Nat ) : ?Nat {
1009+ public func prevIndexOf< T > (array : [var T ], equal : (implicit : ( T , T ) -> Bool ) , element : T , fromExclusive : Nat ) : ?Nat {
10101010 var i = fromExclusive;
10111011 while (i > 0 ) {
10121012 i -= 1 ;
@@ -1209,7 +1209,7 @@ module {
12091209 // / Space: O(1)
12101210 // /
12111211 // / *Runtime and space assumes that `compare` runs in O(1) time and space.
1212- public func compare< T > (array1 : [var T ], array2 : [var T ], compare : (T , T ) -> Order . Order ) : Order . Order {
1212+ public func compare< T > (array1 : [var T ], array2 : [var T ], compare : (implicit : ( T , T ) -> Order . Order ) ) : Order . Order {
12131213 let size1 = array1. size();
12141214 let size2 = array2. size();
12151215 var i = 0 ;
@@ -1245,7 +1245,7 @@ module {
12451245 // / Space: O(1)
12461246 // /
12471247 // / *Runtime and space assumes that `compare` runs in O(1) time and space.
1248- public func binarySearch< T > (array : [var T ], compare : (T , T ) -> Order . Order , element : T ) : {
1248+ public func binarySearch< T > (array : [var T ], compare : (implicit : ( T , T ) -> Order . Order ) , element : T ) : {
12491249 #found : Nat ;
12501250 #insertionIndex : Nat
12511251 } {
0 commit comments