[Haskell-cafe] coerce (safe!)
Luke Palmer
lrpalmer at gmail.com
Sun Mar 2 16:30:22 EST 2008
2008/3/2 Roman Cheplyaka <roma at ro-che.info>:
> * Krzysztof Skrzętnicki <gtener at gmail.com> [2008-03-02 01:21:42+0100]
>
> > Well, it is simply
> >
> > > coerce :: a -> b
> > > coerce _ = undefined
> >
> > so coerce is simply empty function. But still, it is possible to write a
> > function of type (a->b).
> > Well, possibly I didn't write anything particularly new, but please excuse
> > me for I'm still in
> > sort of a shock after I've discovered it.
>
> Also there's nice possibility of defining Maybe a without ADT.
> type Maybe a = (a, Bool)
> just x = (x, True)
> nothing = (undefined, False)
That's a hack. This is my favorite:
type Maybe a = forall b. (a -> b) -> b -> b
just x = \j n -> j x
nothing = \j n -> n
Luke
More information about the Haskell-Cafe
mailing list