I noticed that function subtypes
has been moved to module InteractiveUtils
. However the supertype
function remained in Base.operators.jl. Why is that?
In my opinion subtypes
should have remained in Base. If supertype
has a legitimate role in Julia code, then so does subtypes
.
It seems that subtypes
is still exported from Base
, so it being located in InteractiveUtils
doesn’t currently affect the user.
I agree that both supertype
and subtypes
should be in Base
and exported to the user, though I don’t have any opinion on whether it should be in InteractiveUtils
.
1 Like
When I tested my own package using Julia v0.70-beta I got the following message
WARNING: Base.subtypes is deprecated: it has been moved to
the standard library package `InteractiveUtils`.
Add `using InteractiveUtils` to your imports.
So clearly the current intent is to move the subtypes
function out of Base.
Because it’s largely useful as an interactive utility.
I understand that part and I agree that it is a reasonable assumption for all other functions and macros defined in InteractiveUtils.
But if I want to use ‘subtypes’ it in my regular code (just as I would want to use ‘supertype’), I’d have to import/using package InteractiveUtils in my package and add it to the package dependencies.
That seems somewhat heavy-handed for just wanting to use the function ‘subtypes’.
Supertype is an immediate and unchangeable property of a type. Subtypes is not like that at all: the entire type graph has to be walked to compute it and it changes any time someone defines a new subtype. Any code that’s using it in a way that’s not just exploratory is fairly suspect.
2 Likes
I see your point. Thanks.