[commit: ghc] tc-arrows: Rearrange the typechecking of arrows, especially arrow "forms" (49badc9)

Simon Peyton Jones simonpj at microsoft.com
Thu Feb 14 17:07:37 CET 2013


Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : tc-arrows

http://hackage.haskell.org/trac/ghc/changeset/49badc91c52fc1f65a3ff5bfb3edaecbd617de61

>---------------------------------------------------------------

commit 49badc91c52fc1f65a3ff5bfb3edaecbd617de61
Author: Simon Peyton Jones <simonpj at microsoft.com>
Date:   Thu Feb 14 15:25:23 2013 +0000

    Rearrange the typechecking of arrows, especially arrow "forms"
    
    The typechecking of arrow forms (in GHC 7.6) is known to be bogus,
    because it marches down tuple types that may not yet be fully worked
    out, depending on when constraint solving happens.  Moreover,
    coercions are generated and simply discarded.  The fact that it works
    at all is a miracle.
    
    This refactoring is based on a conversation with Ross, where we
    rearranged the typing of the argument stack, so that the arrows
    have the form
       a (env, (arg1, (arg2, ...(argn, ())))) res
    rather than
       a (arg1, (arg2, ...(argn, env))) res
    as it was before.
    
    This is vastly simpler to typecheck; just look at the beautiful,
    simple type checking of arrow forms now!
    
    We need a new HsCmdCast to capture the coercions generated from
    the argument stack.
    
    Current state of play:
       * syntax done
       * renamer done
       * typechecker done
       * desugarer NOT DONE
    
    So nothing will work yet, hence on a branch

 compiler/deSugar/Coverage.lhs   |    3 +
 compiler/deSugar/DsArrows.lhs   |    6 +-
 compiler/hsSyn/HsExpr.lhs       |   13 ++-
 compiler/hsSyn/HsUtils.lhs      |    7 +-
 compiler/parser/Parser.y.pp     |    4 +-
 compiler/parser/RdrHsSyn.lhs    |    4 +-
 compiler/rename/RnExpr.lhs      |    4 +-
 compiler/rename/RnTypes.lhs     |    2 +-
 compiler/typecheck/TcArrows.lhs |  270 ++++++++++++++++++---------------------
 compiler/typecheck/TcHsSyn.lhs  |    6 +-
 10 files changed, 156 insertions(+), 163 deletions(-)


Diff suppressed because of size. To see it, use:

    git show 49badc91c52fc1f65a3ff5bfb3edaecbd617de61



More information about the ghc-commits mailing list