
2 Mar
2008
2 Mar
'08
4:19 a.m.
"Krzysztof Skrzętnicki"
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.
You have to remember that types in Haskell all have undefined as a member (this is an inevitable consequence of allowing arbitrary recursion). So your coerce is returning something that is in the type claimed by the result, so there's nothing shocking about it! -- Jón Fairbairn Jon.Fairbairn@cl.cam.ac.uk