File tree Expand file tree Collapse file tree 4 files changed +17
-18
lines changed Expand file tree Collapse file tree 4 files changed +17
-18
lines changed Original file line number Diff line number Diff line change 1010 *)
1111 fun hashString s =
1212 (* String hash with fast paths for small strings *)
13- let val len = String.size s
14- val radix = 127
15- val subCode = String.subCode s
13+ let val len = String.size s
14+ val radix = 127
15+ val codeAt = String.sub' s
1616 in case len of 0 => 0
17- | 1 => subCode 0
18- | 2 => (radix * subCode 0 + subCode 1) andb Number.maxInt32
17+ | 1 => codeAt 0
18+ | 2 => (radix * codeAt 0 + codeAt 1) andb Number.maxInt32
1919 | _ => let fun go idx acc =
2020 if len <= idx then acc
21- else go (idx + 1) ((acc * radix + subCode idx) andb Number.maxInt32)
21+ else go (idx + 1) ((acc * radix + codeAt idx) andb Number.maxInt32)
2222 in go 0 0
2323 end
2424 end
Original file line number Diff line number Diff line change @@ -26,8 +26,7 @@ let val __substring = substring
2626
2727 (** The character value at the given index. If `i` is out of bounds, then 0 (NULL) is
2828 * returned. *)
29- (* TODO (#59): Rename to `sub'` when `'` symbols are properly supported. *)
30- fun subCode s i = charCodeAtWithDefault (s, i, 0)
29+ fun sub' s i = charCodeAtWithDefault (s, i, 0)
3130
3231 (** Returns the substring of `s`. Indices beyond the end of string are silently truncated. *)
3332 fun substring s i j = __substring (s, i, j)
@@ -76,7 +75,7 @@ let val __substring = substring
7675 maxSize,
7776 size,
7877 sub,
79- subCode ,
78+ sub' ,
8079 substring,
8180 concat,
8281 concatWith,
Original file line number Diff line number Diff line change 1616 [33m[ TEST ][0m it is '' for 5 [32m[ PASS ][0m it is '' for 5
1717 [33m[ TEST ][0m it is '' for 6 [32m[ PASS ][0m it is '' for 6
1818 [34mend [0m
19- [34mbegin [0msubCode
19+ [34mbegin [0msub'
2020 [33m[ TEST ][0m it is 87 for 0 [32m[ PASS ][0m it is 87 for 0
2121 [33m[ TEST ][0m it is 111 for 1 [32m[ PASS ][0m it is 111 for 1
2222 [33m[ TEST ][0m it is 114 for 2 [32m[ PASS ][0m it is 114 for 2
Original file line number Diff line number Diff line change @@ -21,14 +21,14 @@ let val tests = Unit.group "String" [
2121 ]
2222 end,
2323 let val s = "World!"
24- in Unit.group "subCode " [
25- Unit.it "is 87 for 0" (Unit.isEq 87 (String.subCode s 0))
26- , Unit.it "is 111 for 1" (Unit.isEq 111 (String.subCode s 1))
27- , Unit.it "is 114 for 2" (Unit.isEq 114 (String.subCode s 2))
28- , Unit.it "is 108 for 3" (Unit.isEq 108 (String.subCode s 3))
29- , Unit.it "is 100 for 4" (Unit.isEq 100 (String.subCode s 4))
30- , Unit.it "is 33 for 5" (Unit.isEq 33 (String.subCode s 5))
31- , Unit.it "is 0 for 6" (Unit.isEq 0 (String.subCode s 6))
24+ in Unit.group "sub' " [
25+ Unit.it "is 87 for 0" (Unit.isEq 87 (String.sub' s 0))
26+ , Unit.it "is 111 for 1" (Unit.isEq 111 (String.sub' s 1))
27+ , Unit.it "is 114 for 2" (Unit.isEq 114 (String.sub' s 2))
28+ , Unit.it "is 108 for 3" (Unit.isEq 108 (String.sub' s 3))
29+ , Unit.it "is 100 for 4" (Unit.isEq 100 (String.sub' s 4))
30+ , Unit.it "is 33 for 5" (Unit.isEq 33 (String.sub' s 5))
31+ , Unit.it "is 0 for 6" (Unit.isEq 0 (String.sub' s 6))
3232 ]
3333 end,
3434 let val s = "Hello Troupe!"
You can’t perform that action at this time.
0 commit comments