检查矩阵ocaml中的所有值

时间:2018-11-09 20:04:55

标签: matrix ocaml

我有这个矩阵:

let arr = Array.make_matrix 4 4 0;;

以及要检查所有元素是否均为0的内容。
我听说过 for_all 函数,但是我不太清楚该如何将其与矩阵一起使用,因为它需要一个int数组或一个int列表。

2 个答案:

答案 0 :(得分:1)

根据文档(https://caml.inria.fr/pub/docs/manual-ocaml/libref/Array.html),以下是您需要了解的所有内容:

val for_all : ('a -> bool) -> 'a array -> bool

Array.for_all p [|a1; ...; an|]检查数组的所有元素是否满足谓词p。也就是说,它返回(p a1) && (p a2) && ... && (p an)

示例:Array.for_all ((=) 0)的类型为int array -> bool,并检查所有元素是否均为零。

答案 1 :(得分:0)

矩阵是一个数组数组(如果需要,则是一个行数组)。因此,您需要在每一行中执行一个for_all来检查该行的所有元素是否为零,而另一个外部for_all来检查该行中的所有for_all是否都在正确:

let arr = Array.make_matrix 4 4 0 in
Array.for_all (fun row ->
  Array.for_all ((=) 0) row) arr