Is type inference working as expected here, or is this a bug? # type record_type = { array_field : int array };; type record_type = { array_field : int array; } # let test_function_1 x = Array.set x.array_field 1 3;; val test_function_1 : record_type -> unit = # let test_function_2 x = x.array_field.[1] <- 3;; Characters 24-46: let test_function_2 x = x.array_field.[1] <- 3;; ^^^^^^^^^^^^^^^^^^^^^^ Warning 3: deprecated: String.set Use Bytes.set instead. Characters 24-37: let test_function_2 x = x.array_field.[1] <- 3;; ^^^^^^^^^^^^^ Error: This expression has type int array but an expression was expected of type bytes = string #