如何在返回列表之前记录Ocaml中列表的所有元素?

时间:2017-09-18 17:04:38

标签: list ocaml

我希望在减少返回之前记录(现在打印)结果中的所有元素。有没有办法实现这一目标?

{{1}}

上面的代码无法编译:

{{1}}

1 个答案:

答案 0 :(得分:1)

您唯一的问题似乎是列表中的元素属于(int * int)类型,您将它们视为字符串。

let string_of_int_pair (a, b) = Printf.sprintf "(%d, %d)" a b

let calculate ~size_of_experiment:s ~number_of_buckets:n =
  let results = run_experiments s n in
  List.iter (fun x -> print_endline (string_of_int_pair x)) results;
  List.fold_left (fun x y -> x + (snd y)) 0 results

更普遍的问题是,如果不为每种情况自己编写代码,那么打印各种类型的值会非常好。为此,您可以使用类似deriving的内容。