 
            
            
            
            
                9 Sep
                
                    2010
                
            
            
                9 Sep
                
                '10
                
            
            
            
        
    
                5:46 a.m.
            
        | > I'm afraid I didn't understand your questions well enough to answer them.
| 
| My question is, why does this type check:
It's hard for me to answer a question like that!  To explain why something type checks I'd have to show every constraint and how it is solved.  
I think you have something more specific in mind.  Maybe you think "this should not typecheck".  E.g.  here's an expression (f x), and f has type Int ->