2010-11-29 37 views
4

J'essaie de lire un fichier et de renvoyer l'élément lu du fichier en entrée d'une autre fonction.renvoie les valeurs du fichier - ocaml

Comment puis-je retourner une valeur lorsque je lis le fichier? J'ai essayé tout ce dont je suis conscient et je suis désespérément perdu.

Mon code est le suivant:

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 =() 

Mon fichier contient une chaîne qui est un code nécessaire comme entrée pour une autre fonction.

Aidez-nous s'il vous plaît. Je ne suis pas sûr d'où je vais mal.

Merci.

Répondre

4

Si plusieurs expressions sont séquencées ensemble en utilisant ;, la valeur de l'expression entière est la valeur de la dernière expression de la séquence. Donc si vous avez quelque chose comme ((x^line) :: l); close_in ic la valeur de cette expression est la valeur de close_in ic, qui est ().

De toute évidence, ce n'est pas ce que vous voulez. Afin de faire ((x^line) :: l) le résultat de l'expression entière, vous devez le placer après close_in ic.

+0

merci beaucoup !!! J'étais tellement totalement perdu !!! Merci :) – JJunior