如何读取文件,并将其写入其他文件

时间:2019-05-30 09:44:52

标签: ocaml

我希望一切都好。此时,我计划读取一个文件,然后将其写入另一个文件。 (在继续操作文本之前,等同于OCaml中的cp。)目前,在我的代码中,我正在使用extlib来读取文件,然后输出文件。我还使用dune将文件构建为可执行文件。我的文件如下所示:

(* example.ml file *) 
let read_filename = "example_1.ts"
let filename = "example_2.ts"

let () =

  let text read_filename =
    let chan = open_in read_filename in
    Std.input_list chan  

  let filename = filename in 
  let text = text in 
  Std.output_file ~filename ~text 
  (* normal exit: all channels are flushed and closed *)

当我使用dune build example.bc构建文件时,出现以下错误:

File "example.ml", line 11, characters 2-5:
Error: Syntax error

我试图弄清楚我在做什么错,但无济于事。任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

当我读过您的代码时,我会在这些行中加上标记。

  let filename = filename in 
  let text = text in 

为什么要写这行? (*您可以安全地删除它*)

然后我发现您的语法错误是您忘记了in

的那一行
(* example.ml file *) 
let read_filename = "example_1.ts"
let filename = "example_2.ts"

let () =
  let text read_filename =
    let chan = open_in read_filename in
    Std.input_list chan
  in
    Std.output_file ~filename ~text 
  (* normal exit: all channels are flushed and closed *)

每个本地定义的规则必须具有一个in关键字 (*本地定义是let表达式内的let *)