dnldlg
November 21, 2024, 10:46am
1
Hello everyone,
I encounter a strange error when using the maximum function on Julia v1.10.6. Let’s look at a variable Na
, which is a vector of integers.
Example code:
println(Na)
println(typeof(Na))
println(typeof(Na[1]))
maximum(Na)
Result:
Any[5, 6, 7, 9, 10, 11]
Vector{Any}
Int64
and this error:
Why would a matrix play a role here?
nsajko
November 21, 2024, 10:52am
2
Can’t reproduce. I’m guessing you modified some method in your current Julia session. Can you reproduce in a fresh REPL?
3 Likes
Cannot reproduce on 1.11. You probably have redefined maximum
or some other function? Try starting with a fresh session.
2 Likes
dnldlg
November 21, 2024, 11:07am
5
It works if I isolate the problem, but throws this error if I import all the packages I’m using.
I personally did not overwrite the function, but could it be that one of the packages does? If so, what would be a good strategy to check this?
1 Like
Load the packages in one by one.
2 Likes
What are the packages? Generally, it would be best if you could you post a minimum working example so we are able to reproduce the problem.
3 Likes
Benny
November 21, 2024, 11:40am
8
Something is very off. Na
is clearly an instance of Vector{Any}
, but the stacktrace is claiming the maximum
call took an instance of Vector{Int64}
. Either type works on v1.10.6. Besides max
being called on two Float64
matrices, nothing in the stacktrace is showing any file or module originating from a pirating package.
2 Likes
dnldlg
November 21, 2024, 1:39pm
9
I managed to isolate the problem with the help of your comments. Within one of my self-written modules I had a function of this form
function identity(dim::Int64)::Matrix{Float64}
# something
end
and managed to overwrite it with accidentally with Base.identity
at another place in the code. That’s why it was comparing matrices in the end…
Thank you for your help and dealing with my stupidity
4 Likes
Aside: you might want the function I(dim)
in the LinearAlgebra
stdlib.
2 Likes
Benny
November 21, 2024, 1:54pm
11
That makes sense, the piracy didn’t show up in the stacktrace because it didn’t throw an error, it made another call error. Just part of debugging I guess.