Check all the values in a matrix

I have this matrix:

let arr = Array.make_matrix 4 4 0;;

and what to check if all elements are 0.
I heard of the function for_all but I can’t quite figure it out how to use it with a matrix, since it expects an int array or a int list.

Beginner response here:

Array.for_all (fun x -> Array.for_all(fun y -> y = 0) x) arr;;

2 Likes

Array.make_matrix creates an array of arrays whereas for_all works in an individual array and therefore does not give you access to all (x,y) entries in the matrix. @bbutterfield provides an answer.

If you need this test often on a fixed small dimension, a fast way would be to define a matrix and compare it directly:

let zero = Array.make_matrix 4 4 0

Now you can compare arr = zero by taking advantage of the polymorphic comparison operator (=) that will do the traversal internally

2 Likes