@@ -142,7 +142,7 @@ func concat*[T](seqs: varargs[seq[T]]): seq[T] =
142
142
inc (i)
143
143
144
144
func addUnique * [T](s: var seq [T], x: sink T) =
145
- # # Adds `x` to the container `s` if it is not already present.
145
+ # # Adds `x` to the container `s` if it is not already present.
146
146
# # Uses `==` to check if the item is already present.
147
147
runnableExamples:
148
148
var a = @ [1 , 2 , 3 ]
@@ -920,10 +920,10 @@ template foldl*(sequence, operation: untyped): untyped =
920
920
assert concatenation == " nimiscool"
921
921
assert foldl (procs, foo (a, b)) == " procIsAlsoFine"
922
922
923
- assert sequence.len > 0 , " Can't fold empty sequences "
924
- var result : typeof (sequence[ 0 ])
925
- result = sequence[0 ]
926
- for i in 1 ..< sequence.len :
923
+ let n = sequence.len
924
+ assert n > 0 , " Can't fold empty sequences "
925
+ var result = sequence[0 ]
926
+ for i in 1 ..< n :
927
927
let
928
928
a {.inject .} = result
929
929
b {.inject .} = sequence[i]
@@ -988,13 +988,12 @@ template foldr*(sequence, operation: untyped): untyped =
988
988
assert multiplication == 495 , " Multiplication is (5*(9*(11)))"
989
989
assert concatenation == " nimiscool"
990
990
991
- let s = sequence # xxx inefficient, use {.evalonce.} pending #13750
992
- let n = s.len
991
+ let n = sequence.len
993
992
assert n > 0 , " Can't fold empty sequences"
994
- var result = s [n - 1 ]
993
+ var result = sequence [n - 1 ]
995
994
for i in countdown (n - 2 , 0 ):
996
995
let
997
- a {.inject .} = s [i]
996
+ a {.inject .} = sequence [i]
998
997
b {.inject .} = result
999
998
result = operation
1000
999
result
0 commit comments