This interactive hoc session fails: term% hoc while (read(x)) print x,2*x, "\n" 1 1 2 hoc: non-number read into x near line 2 It will work if you add '\n' to the whitespace characters skipped over in the varread function.