Вопрос: возвращает значения из файла - ocaml


Я пытаюсь прочитать файл и вернуть элемент, считанный из файла, в качестве входа в другую функцию.

Как я могу вернуть значение, когда я читаю из файла? Я пробовал все, что я знаю, и все еще безнадежно потерян.

Мой код выглядит следующим образом:

let file = "code.txt";;

let oc  = open_out file in    (* create or truncate file, return channel *)

    fprintf oc "%s\n" (play);   (* write code to file returned from calling (play) function *)   

    close_out oc    ;;


(*read from file*)


let read l=

    let f x =

        let ic  = open_in file in

        let line = input_line ic in  (* read line from in_channel and discard \n *)

            print_endline line;          (* write the result to stdout *)

                ((x ^ line) :: l);

            flush stdout;                

            close_in ic ;
    in
     f l
    ;;

prompt:  read;; function call outputs:

- : unit = ()

Мой файл содержит строку, которая является кодом, необходимым для ввода другой функции.

Пожалуйста помоги. Я не уверен, где я ошибаюсь.

Спасибо.


4


источник


Ответы:


Если несколько выражений секвенированы вместе, используя ; значение всего выражения - это значение последнего выражения в последовательности.

Поэтому, если у вас есть что-то вроде ((x ^ line) :: l); close_in ic значение этого выражения является значением close_in ic, который (),

Очевидно, это не то, что вы хотите. Чтобы сделать ((x ^ line) :: l) результат всего выражения, вы должны поместить его после close_in ic,


4