 
            
            
            
            
                25 Oct
                
                    2013
                
            
            
                25 Oct
                
                '13
                
            
            
            
        
    
                4:12 p.m.
            
        On Sat, Oct 26, 2013 at 12:26 AM, Nicholas Vanderweit < nick.vanderweit@gmail.com> wrote:
Or, alternatively, using fix from Data.Function:
fix NotVoid
Yes, and all of them are indistinguishable from bottom or 'undefined :: forall a. a', the ghost that inhabits all types, including the empty one: Void. What trips up beginners is the interpretation of indistinguishable-ness. At the level of denotational design, 'undefined' and 'error "(sadface)"' are to be treated as equal, although beginners would point out: "hey look, I get different output!" Call it denotational design, or call it beautiful FP modelling, this stuff is really where it's at. -- Kim-Ee