A Pointless Library Proposal

David Menendez zednenem at psualum.com
Thu Oct 26 02:11:18 EDT 2006

Conor McBride writes:

> > magic :: Zero -> a
> > magic _ = error "There's magic, as no such thing!"
> It's a little frustrating to have to define this function lazily. I
> prefer the strict definition with no lines, but it isn't valid
> Haskell!

I think you could avoid that frustration by defining Zero/Void/Bikeshed
liko so:

    newtype Void = Void { avoid :: forall a. a }

That gets you a strictly defined avoid and emphasizes that Void is
isomorphic to (forall a. a).

On a semi-related note, how about instances for the Prelude classes?

For example,
    instance Show Void where
        show = avoid
    instance Read Void where
        readsPrec _ _ = []

    instance Eq Void where
        a == b = avoid a
    instance Ord Void where
        compare a b = avoid a

Enum and Bounded are out, because they have methods which produce
values, but Data and Typeable instances might be reasonable.
David Menendez <zednenem at psualum.com> | "In this house, we obey the laws
<http://www.eyrie.org/~zednenem>      |        of thermodynamics!"

More information about the Libraries mailing list