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