feature sky
feature sky

Reputation: 171

Read file line by line and store in a list

I have a input.txt file with few lines of text. I am trying to store those lines in a list l. I think I am doing correct but list l is not getting updated. please help.

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;;

Apart from Warning 10, I am not getting any error.

Upvotes: 0

Views: 122

Answers (2)

Str.
Str.

Reputation: 1439

It looks like you are caught in imperative programming - a good thing to start with OCaml!

Typical functional and recursive programming would read a file like this:

Read a line, then append "read a line" to it. At End_of_File you finish the list with [].

Upvotes: 0

Thomash
Thomash

Reputation: 6379

let l = []

Variables in OCaml are immutable, so no matter what code you write after this line, l will always be equal to [].

Upvotes: 2

Related Questions