Search
Tuesday, 22nd of November 2022, 19:48:30 UTC
21:02:55
harovali
hi! , I'm struggling a little bit trying to get a do loop exit nicely on eof, using read-line to get liens one by one off a text file
21:04:04
harovali
for instance https://privatebin.net/?6d7677dd0a44518f#2AnmhAwEawqwLYpar8gKa8RaEhAQSHG6v3BxhkRmN71Z
21:05:20
harovali
this loop ends with an end of file exception, which it should not
21:05:33
harovali
any kind help is gladly welcome
21:10:58
contrapunctus
harovali: "Error decompressing paste, due to missing WebAssembly support."
21:10:59
jackdaniel
harovali: you supply eof-error-p as :eof-value (which is a generalized boolean "true") - the function will error according to that flag
21:11:20
jackdaniel
try (read-line stream nil nil nil)
21:11:44
jackdaniel
or (read-line stream nil :eof-value nil) ,but then you'll need to test for (eq texto :eof-value) instead of (null texto)
21:12:53
jackdaniel
the condition at the beginning of the do body is also unnecssary, you already test for that in the second DO clause
21:13:09
jackdaniel
you have only one variable, so DO would be more clear than DO*
21:14:39
jackdaniel
you may rewrite the same form as (do ((text #1=(read-line s nil) #1#)) ((null text)) (format t "~a~%" (cl-ppcre:split "\\|" text)))
21:15:33
jackdaniel
or (loop for text = (readline s nil) while text do (format ...))
21:20:16
harovali
jackdaniel: thank you VERY much
21:21:25
harovali
#1= is something special ?
21:21:42
harovali
a reader macro : ) !!!
23:00:46
ak-coram`
jackdaniel: sorry, it only worked for the small example I tested the original issue with
23:01:10
ak-coram`
I'll look into it some more probably tomorrow
Wednesday, 23rd of November 2022, 7:48:30 UTC