逐行读取文件并存储在列表中

时间:2016-04-08 07:49:06

标签: list file-io ocaml

我有一个包含少量文字的input.txt文件。我试图将这些行存储在列表中。我认为我做的正确,但列表l没有得到更新。请帮忙。

let l = []
let () = 
  let ic = open_in "input.txt" 
  in
  try
    while true do
      let line = input_line ic 
      in
      let rec append(a, b) = match a with
      |[] -> [b]
      |c::cs -> c::append(cs,b)
      in
      append(l, line)
      (* print_endline line *)
    done
  with End_of_file ->
close_in ic;;

除警告10外,我没有收到任何错误。

2 个答案:

答案 0 :(得分:2)

let l = []

OCaml中的变量是不可变的,因此无论您在此行之后编写什么代码,l将始终等于[]

答案 1 :(得分:0)

看起来你遇到了命令式编程 - 从OCaml开始就是一件好事!

典型的函数式和递归式编程将读取如下文件:

读一行,然后追加"读一行"它。在End_of_File,您使用[]完成列表。