In Julia manual types, it is said
There is no division between object and non-object values: all values in Julia are true objects having a type that belongs to a single, fully connected type graph, all nodes of which are equally first-class as types.
But a function cannot mutate basic data types like Floats or bolleans, but it can change an array. Why is this? How it differentiate these types?