2
我在使用Core库的Real World OCaml的同时编写了以下函数。使用OCaml/Core模块的习惯用法?
open Core.Core_list
open Core.Option
open Core.Std
open Re2
let getMaxFilename target =
let Ok pat = Regex.create "^.*(..)\\.txt$" in
Sys.ls_dir target |>
List.map ~f:(Regex.find_submatches pat) |>
List.filter ~f:is_ok |>
List.map ~f:(fun x -> ok_exn x |> Array.to_list |> (Fn.flip nth_exn) 1 |> fun x -> value_exn x) |>
List.reduce ~f:max
它看起来杂乱无章我,因为我有很多的“打开”的顶部,我不得不名单,数组,SYS Fn键,然后在所有的,我使用的功能的其他模块的名称。这是编写OCaml的“正确”方式?是否有一种标准风格取消了这些?
您不需要前两行:Core.Core_list是Core.Std.List和Core.Option到Core.Std.Option的别名。所以,我通常使用'open Core','open Core.Std'并且玩得开心 – Kakadu
@Kakadu为什么不把它当作答案? – lukstafi
@Kakadu我尝试过'打开Core'和'打开Core.Std',但我没有访问像'flip'或'nnth'这样的函数。听起来我仍然需要命名许多模块。这是写Ocaml代码的正确方法吗? – Ana