Skip to content
  • Simon Peyton Jones's avatar
    [project @ 1998-12-10 08:54:18 by simonpj] · 688c1dd3
    Simon Peyton Jones authored
    This massive commit is what Simon has been up to for a couple of weeks.
    
    1.  Scoped type variables are in
    
    2.  The typechecker works a bit differently.
        In partiular, the compiler no longer has TcTyVars of
    	a different type than TyVars.
        All the 's' and 'flexi' type parameters have vanished from Id, TyVar,
    	Type, etc.
        The typchecker monad is now in the IO world (though I didn't get
    	around to removing the 's' parameter from the monad, but it's
    	no longer used)
    
        Bottom line: significantly simpler,
    		 fewer gratuitous conversions from TcType <-> Type
    		 but less type security in the compiler
    
        There was a reason for doing this now; somehow the 's' stuff
        got in the way of kind inference for scoped type variables
        and I lost patience with it.
    
    3.  Haskell98-style reporting of scope errors; i.e. you only get
        an error if you use a variable that could mean two different things.
        At the same time I did a lot of tidying-up in the renamer.
    
    4.  Mostly-complete fix to the reporting of unused variables, which
        has never worked properly.  (The 'mostly' bit is because it reports
        those 'system' tycons like _C as unused.  I'm on the job.)
    
    5.  The parser is a bit tider than it was.  A few more ugn files give
        a more refined C data type.  I had to tackle this because of
        the scoped type variables.
    
    6.  Haskell98-style fixities.  Fixity decls can occur wherever a type
        signature can
    
    7.  Some HsSyn changes that constitute minor tidy ups
    	Put TypeDecl and ClassDecl into one type [HsDecls]
    	Improved the HsMatch/GRHSs etc data types.
    
    8.  TcGRHSs is removed; combined into TcMatches.
    
    I DO NOT PROMISE THAT ALL OF THIS WORKS.  It compiles the Prelude,
    but I have not tested it more than that.  Stick to 4.01 if you want a
    compiler that's sure to work.
    688c1dd3