Malcolm Wallace <Malcolm.Wallace@cs.york.ac.uk> wrote,
Manuel M T Chakravarty <chak@cse.unsw.edu.au> writes:
Sure, but there is also null = (== []) in the Prelude and `Maybe.isNothing'.
No, the definition of null is null [] = True which is quite different from (==[]) because it has a less-constrained type. null :: [a] -> Bool (==[]) :: Eq a => [a] -> Bool
Likewise, isNothing :: Maybe a -> Bool (==Nothing) :: Eq a => Maybe a -> Bool
So there are good reasons for having separate predicates testing the null/empty case at those polymorphic types, but no reason (except consistency of naming) for a pseudo-polymorphic type like Ptr a.
Oh, you are right. I overlooked this. In this case, I actually tend to not include these extra functions (unless somebody likes to argue in their favour). Cheers, Manuel