小编pri*_*hey的帖子

OCaml:Stream.peek没有消耗线?

我正在研究一个迭代输入文件的程序,其中包含可变数量的"程序",结尾为"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)

ocaml stream

3
推荐指数
1
解决办法
167
查看次数

标签 统计

ocaml ×1

stream ×1