Wouldn't it be reasonable if code like …

def scramble(f: Float) = f
//  =>   1.23456794E9

… was a compiler error instead of converting our Long to a Float?

What about …

List(10, 5, 2.5)

If we don't convert 10 and 5 to Doubles,
what will be the element type of List?

Pretty useless: AnyVal offers no useful methods!
List[Int|Double] // with union types ...
Useless, but at least we know what went wrong!