我正在研究一个迭代输入文件的程序,其中包含可变数量的"程序",结尾为"0".如果我从文件的顶部开始,我的函数运行正常,但由于某种原因,通过查看下一个字符是'0'(表示文件的结尾)来消耗一行.
这是我的代码:
let line_stream_of_channel channel =
Stream.from
(fun _ ->
try Some (input_line channel) with End_of_file -> None);;
let in_channel = open_in "dull.in" in
let line_stream = line_stream_of_channel in_channel in
while Stream.peek line_stream != Some "0" do
run in_channel;
print_string "...\n";
done;;
Run Code Online (Sandbox Code Playgroud)
根据我的阅读,Stream.peek不应该消耗一条线,所以也许问题不是来自那个,但如果不是,我无法弄清楚它在做什么.有任何想法吗?
编辑这是我的整个程序:
let hello c =
print_char c;;
let hello_int c =
print_int c;
print_char '\n';;
let ios = int_of_string;;
let rec print_string_list = function
[] -> print_string "\n"
| h::t -> print_string h ; print_string " …Run Code Online (Sandbox Code Playgroud)