
"Yitzchak Gale"
In the semantic domain there is one bottom. In Haskell there are many expressions that represent bottom. One cannot test those for equality.
If we are being pedantic, I can define data Foo = Foo instance Eq Foo where _ == _ = True (undefined :: Foo) == Foo --> True
The result of a Haskell function applied to some arguments cannot be bottom.
This function is bottom for any argument: f x = undefined
I think you mean that they cannot be bottom if you want to compare them for equality. Yes.
See above. What is the precise term for describing this? Structural equality? On the other hand, some bottoms are exceptions, you may be able to catch them and do something useful with them after all, no? How does that fit in? -k -- If I haven't seen further, it is by standing in the footprints of giants