2010-11-29 5 views
4

파일을 읽고 파일에서 읽은 요소를 다른 함수의 입력으로 반환하려고합니다.파일에서 반환 값 - 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과 같은 값을 가진 식의 값은 인 ()입니다.

분명히 그것은 당신이 원하는 것이 아닙니다. ((x^line) :: l)을 전체 식의 결과로 만들려면 close_in ic 뒤에 넣어야합니다.

+0

정말 고마워요! 나는 그렇게 완전히 잃어 버렸다! 감사 :) – JJunior