我希望一切都好。此时,我计划读取一个文件,然后将其写入另一个文件。 (在继续操作文本之前,等同于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
我试图弄清楚我在做什么错,但无济于事。任何帮助将不胜感激。谢谢。
答案 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 *)