> P.S.: A more systematic solution would be to change the Haskell
> language by either introducing a Top type which is the supertype of
> everything and use it instead of ().
Haskell doesn't have subtyping, so this wouldn't really make sense. Perhaps a typeclass Top would make sense (where the compiler automatically creates an instance of it for all types), but then `Top a => a` would be equivalent to just `a`, so it wouldn't really serve any purpose.