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 _ = ()