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

Simon Peyton-Jones simonpj at microsoft.com
Thu Feb 14 18:40:51 CET 2013


Ross

I've pushed a new branch, tc-arrows, for the new typechecking of arrows, based on the discussion we had last week.

It all compiles, but won't work because I have done nothing to the desugaring.  

It uses our new representation with (env, nested-tuple-with-unit-at-end)
rather than (nested-tuple-with-env-at-the-end), so desugaring needs significant attention.

Would you like to work on the desugarer?  I'm out of my depth, but happy to advise.

Thanks

Simon

| -----Original Message-----
| From: ghc-commits-bounces at haskell.org [mailto:ghc-commits-
| bounces at haskell.org] On Behalf Of Simon Peyton Jones
| Sent: 14 February 2013 16:08
| To: ghc-commits at haskell.org
| Subject: [commit: ghc] tc-arrows: Rearrange the typechecking of arrows,
| especially arrow "forms" (49badc9)
| 
| Repository : ssh://darcs.haskell.org//srv/darcs/ghc
| 
| On branch  : tc-arrows
| 
| http://hackage.haskell.org/trac/ghc/changeset/49badc91c52fc1f65a3ff5bfb3
| edaecbd617de61
| 
| >---------------------------------------------------------------
| 
| 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
| 
| _______________________________________________
| ghc-commits mailing list
| ghc-commits at haskell.org
| http://www.haskell.org/mailman/listinfo/ghc-commits



More information about the ghc-devs mailing list