let sp = ' '
let seq1 = @[1, 3, 5, 7]
proc printSeq(s: seq, nprinted: int = -1) :string =
var nprinted = if nprinted == -1: s.len else: min(nprinted, s.len)
for i in 0 ..< nprinted:
write(stdout, s[i], sp)
write(stdout, "print first", printSeq(seq1), "\L")
echo "printSeq(seq1, 2)", printSeq(seq1, 2)
ouputs
1 3 5 7 print first
1 3 printSeq(seq1 ,2)
I would expect
print first 1 3 5 7
printSeq(seq1 ,2) 1 3
let sp = ' '
let seq1 = @[1, 3, 5, 7]
proc printSeq(s: seq, nprinted: int = -1) :string =
var nprinted = if nprinted == -1: s.len else: min(nprinted, s.len)
for i in 0 ..< nprinted:
write(stdout, s[i], sp)
write(stdout, "print first", printSeq(seq1), "\L")
write(stdout, printSeq(seq1), "print first", "\L")
write(stdout, "print first ")
write(stdout, printSeq(seq1), "\L")
1 3 5 7 print first
1 3 5 7 print first
print first 1 3 5 7
Why would "print first" not be streamed to stdout first?
Because write collects all the arguments in an array? See https://nim-lang.org/docs/io.html#write%2CFile%2Cvarargs%5Bstring%2C%5D
Reading the docs can beat "fuzzing".