
24 Jan
2009
24 Jan
'09
5:56 p.m.
On Sat, 24 Jan 2009, Thomas Davie wrote:
I'm not sure why you're saying that this semantics does not capture non-termination – the only change is that computations resulting in the unit type *can't* non terminate, because we can always optimize them down to (). Of course, if you want to be able to deal with non-termination, one could use the Maybe () type!
I find the current semantics better: All types are handled the same way by default and whenever you want to "optimize" (undefined::()) to () you can use optimizeNull :: () -> () optimizeNull _ = ()