FWIW, I also agree that Null <: Any is wrong but of course that’s impossible without completely nuking the type hierarchy. Null IS special, its not a reference OR a value, its the absence of a meaningful value. I’d prefer if Null NEVER entered a type unless explicitly added but that’s impossible given Null <: Any.
For inside the compiler, I assume that Null will always have special casing anyway in explicit-nulls, so I’m not sure what we’d be saving.
For teachability, yes, Null SHOULD be segregated from the rest of the types! Make it very clear that in Scala, we don’t use null unless writing high performance code or interoping with Java.
My ideal type system would remove Null entirely and instead use an alternate system for tracking nullability. I think(?) we are really the only typed language that insists on having Null as a type in the type system (likely an artifact of Null <: AnyRef being the base). C#, a retrofitted language, uses ? like Kotlin. jSpecify of course uses these kind of augmenting types as well.