JSRUN 用代码说话

输入与输出

编辑教程

输入与输出

从标准输入读取并打印到标准输出

我们准备了一个名为reverser.ml的文件,其中包含以下内容:

let acc = ref [] in
    try
        while true do
            acc := read_line () :: !acc;
        done
    with
        End_of_file -> print_string (String.concat "\n" !acc)

然后我们使用以下命令编译我们的程序:

$ ocamlc -o reverser.byte reverser.ml

我们通过将数据传输到新的可执行文件来测试它:

$ cat data.txt
one
two
three
$ ./reverser.byte < data.txt
three
two
one

reserver.ml程序以命令式样式编写。虽然命令式风格很好,但将它与功能翻译进行比较是很有趣的:

let maybe_read_line () =
  try Some(read_line())
  with End_of_file -> None

let rec loop acc =
  match maybe_read_line () with
  | Some(line) -> loop (line :: acc)
  | None -> List.iter print_endline acc

let () = loop []

由于引入了函数maybe_read_line ,控制流程在第二个版本中比在第一个版本中简单得多。

JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟