let array_for_all2 (_func: '-> '-> bool) (_array1: 'a array) (_array2: 'b array) : bool =

  let rec do_at (index: int) : bool =
    if index >= Array.length _array1 then begin
      true
    end
    else begin
      _func _array1.(index) _array2.(index)
      &&
      do_at (index + 1)
    end
  in
    Array.length _array1 == Array.length _array2
    &&
    do_at 0