[commit: ghc] master: Refactor tuple constraints (ffc2150)

Simon Peyton Jones simonpj at microsoft.com
Wed May 20 13:33:30 UTC 2015


Eek.  Well spotted. The "30" is really odd compared to all the other instances, so best to use "7". I'm validating a patch now.

Simon

|  -----Original Message-----
|  From: ghc-devs [mailto:ghc-devs-bounces at haskell.org] On Behalf Of
|  Christiaan Baaij
|  Sent: 20 May 2015 14:02
|  To: ghc-devs at haskell.org
|  Subject: Re: [commit: ghc] master: Refactor tuple constraints
|  (ffc2150)
|  
|  Hi,
|  
|  This patch broke the ‘Binary’ instance for ‘IfaceType’ in
|  ‘iface/IfaceType.hs’
|  Specifically, it changed:
|  
|  ```
|  put_ bh (IfaceLitTy n)
|     = do { putByte bh 30; put_ bh n }
|  ```
|  
|  to:
|  
|  ```
|  put_ bh (IfaceLitTy n)
|     = do { putByte bh 7; put_ bh n }
|  ```
|  
|  However, the ‘get’ definition was left as:
|  
|  ```
|  30 -> do n <- get bh
|           return (IfaceLitTy n)
|  ```
|  
|  I don’t know what’s preferable:
|  - revert the definition of `put_`,
|  - or update the `get` definition to `7`
|  
|  Regards,
|  
|  Christiaan
|  
|  
|  > On 18 May 2015, at 14:45, git at git.haskell.org wrote:
|  >
|  > Repository : ssh://git@git.haskell.org/ghc
|  >
|  > On branch  : master
|  > Link       :
|  http://ghc.haskell.org/trac/ghc/changeset/ffc21506894c7887d3620423aaf8
|  6bc6113a1071/ghc
|  >
|  >> ---------------------------------------------------------------
|  >
|  > commit ffc21506894c7887d3620423aaf86bc6113a1071
|  > Author: Simon Peyton Jones <simonpj at microsoft.com>
|  > Date:   Mon May 11 23:19:14 2015 +0100
|  >
|  >    Refactor tuple constraints
|  >
|  >    Make tuple constraints be handled by a perfectly ordinary
|  >    type class, with the component constraints being the
|  >    superclasses:
|  >        class (c1, c2) => (c2, c2)
|  >
|  >    This change was provoked by
|  >
|  >      #10359  inability to re-use a given tuple
|  >              constraint as a whole
|  >
|  >      #9858   confusion between term tuples
|  >              and constraint tuples
|  >
|  >    but it's generally a very nice simplification. We get rid of
|  >     -  In Type, the TuplePred constructor of PredTree,
|  >        and all the code that dealt with TuplePreds
|  >     -  In TcEvidence, the constructors EvTupleMk, EvTupleSel
|  >
|  >    See Note [How tuples work] in TysWiredIn.
|  >
|  >    Of course, nothing is ever entirely simple. This one
|  >    proved quite fiddly.
|  >
|  >    - I did quite a bit of renaming, which makes this patch
|  >      touch a lot of modules. In partiuclar tupleCon -> tupleDataCon.
|  >
|  >    - I made constraint tuples known-key rather than wired-in.
|  >      This is different to boxed/unboxed tuples, but it proved
|  >      awkward to have all the superclass selectors wired-in.
|  >      Easier just to use the standard mechanims.
|  >
|  >    - While I was fiddling with known-key names, I split the TH Name
|  >      definitions out of DsMeta into a new module THNames.  That
|  meant
|  >      that the known-key names can all be gathered in PrelInfo,
|  without
|  >      causing module loops.
|  >
|  >    - I found that the parser was parsing an import item like
|  >          T( .. )
|  >      as a *data constructor* T, and then using setRdrNameSpace to
|  >      fix it.  Stupid!  So I changed the parser to parse a *type
|  >      constructor* T, which means less use of setRdrNameSpace.
|  >
|  >      I also improved setRdrNameSpace to behave better on Exact
|  Names.
|  >      Largely on priciple; I don't think it matters a lot.
|  >
|  >    - When compiling a data type declaration for a wired-in thing
|  like
|  >      tuples (,), or lists, we don't really need to look at the
|  >      declaration.  We have the wired-in thing!  And not doing so
|  avoids
|  >      having to line up the uniques for data constructor workers etc.
|  >      See Note [Declarations for wired-in things]
|  >
|  >    - I found that FunDeps.oclose wasn't taking superclasses into
|  >      account; easily fixed.
|  >
|  >    - Some error message refactoring for invalid constraints in
|  TcValidity
|  >
|  >    - Haddock needs to absorb the change too; so there is a submodule
|  update
|  >
|  >
|  >> ---------------------------------------------------------------
|  >
|  > ffc21506894c7887d3620423aaf86bc6113a1071
|  > compiler/basicTypes/BasicTypes.hs                  |  21 +-
|  > compiler/basicTypes/DataCon.hs                     |   1 -
|  > compiler/basicTypes/RdrName.hs                     |  28 +-
|  > compiler/basicTypes/Unique.hs                      |  28 +-
|  > compiler/basicTypes/VarSet.hs                      |  23 +-
|  > compiler/coreSyn/CoreLint.hs                       |   2 +-
|  > compiler/coreSyn/MkCore.hs                         |   7 +-
|  > compiler/coreSyn/PprCore.hs                        |   4 +-
|  > compiler/deSugar/Check.hs                          |   2 +-
|  > compiler/deSugar/DsArrows.hs                       |   2 +-
|  > compiler/deSugar/DsBinds.hs                        |  25 +-
|  > compiler/deSugar/DsCCall.hs                        |   6 +-
|  > compiler/deSugar/DsExpr.hs                         |   5 +-
|  > compiler/deSugar/DsMeta.hs                         | 840 +----------
|  ----------
|  > compiler/deSugar/Match.hs                          |   4 +-
|  > compiler/ghc.cabal.in                              |   3 +-
|  > compiler/ghci/RtClosureInspect.hs                  |   7 +-
|  > compiler/hsSyn/Convert.hs                          |   4 +-
|  > compiler/hsSyn/HsExpr.hs                           |   3 +-
|  > compiler/hsSyn/HsPat.hs                            |  35 +-
|  > compiler/hsSyn/HsTypes.hs                          |   2 +-
|  > compiler/iface/BinIface.hs                         |  14 +-
|  > compiler/iface/BuildTyCl.hs                        |   4 +
|  > compiler/iface/IfaceSyn.hs                         |   9 +-
|  > compiler/iface/IfaceType.hs                        | 154 ++--
|  > compiler/iface/TcIface.hs                          |  84 ++-
|  > compiler/main/Constants.hs                         |   3 +
|  > compiler/main/HscMain.hs                           |  11 +-
|  > compiler/parser/Parser.y                           |  20 +-
|  > compiler/parser/RdrHsSyn.hs                        | 164 +++-
|  > compiler/prelude/PrelInfo.hs                       |  28 +-
|  > compiler/prelude/PrelNames.hs                      |  17 -
|  > compiler/prelude/PrelRules.hs                      |   6 +-
|  > compiler/prelude/PrimOp.hs                         |   2 +-
|  > compiler/prelude/THNames.hs                        | 836
|  ++++++++++++++++++++
|  > compiler/prelude/TysWiredIn.hs                     | 269 ++++---
|  > compiler/rename/RnEnv.hs                           |   1 +
|  > compiler/rename/RnNames.hs                         |  42 +-
|  > compiler/rename/RnSplice.hs                        |   6 +-
|  > compiler/simplStg/UnariseStg.hs                    |  10 +-
|  > compiler/specialise/Specialise.hs                  |   3 +-
|  > compiler/stranal/WwLib.hs                          |   6 +-
|  > compiler/typecheck/FunDeps.hs                      |  32 +-
|  > compiler/typecheck/TcBinds.hs                      |  52 +-
|  > compiler/typecheck/TcCanonical.hs                  |  32 -
|  > compiler/typecheck/TcErrors.hs                     |   2 -
|  > compiler/typecheck/TcEvidence.hs                   |  15 +-
|  > compiler/typecheck/TcExpr.hs                       |  10 +-
|  > compiler/typecheck/TcGenDeriv.hs                   |  15 +-
|  > compiler/typecheck/TcHsSyn.hs                      |   5 +-
|  > compiler/typecheck/TcHsType.hs                     |  15 +-
|  > compiler/typecheck/TcInstDcls.hs                   |   4 +-
|  > compiler/typecheck/TcInteract.hs                   |  11 +-
|  > compiler/typecheck/TcMType.hs                      |   1 -
|  > compiler/typecheck/TcPat.hs                        |   2 +-
|  > compiler/typecheck/TcRnMonad.hs                    |   4 +
|  > compiler/typecheck/TcSimplify.hs                   |   1 -
|  > compiler/typecheck/TcSplice.hs                     |   2 +-
|  > compiler/typecheck/TcTyClsDecls.hs                 |  20 +-
|  > compiler/typecheck/TcType.hs                       |   3 -
|  > compiler/typecheck/TcValidity.hs                   | 186 +++--
|  > compiler/types/TyCon.hs                            |  34 +-
|  > compiler/types/Type.hs                             |   7 +-
|  > compiler/types/TypeRep.hs                          |  11 +-
|  > compiler/vectorise/Vectorise/Builtins/Base.hs      |   2 +-
|  > .../vectorise/Vectorise/Builtins/Initialise.hs     |   2 +-
|  > compiler/vectorise/Vectorise/Utils/Closure.hs      |   4 +-
|  > libraries/ghc-prim/GHC/Classes.hs                  |  44 +-
|  > libraries/ghc-prim/GHC/Tuple.hs                    | 242 +++---
|  > libraries/ghc-prim/GHC/Types.hs                    |   2 +-
|  > .../should_fail/NotRelaxedExamples.stderr          |  17 +-
|  > .../indexed-types/should_fail/TyFamUndec.stderr    |  17 +-
|  > testsuite/tests/module/all.T                       |   2 +-
|  > testsuite/tests/module/mod89.hs                    |   2 +
|  > testsuite/tests/module/mod89.stderr                |  10 +-
|  > .../tests/typecheck/should_fail/T9858a.stderr      |   2 +-
|  > .../tests/typecheck/should_fail/fd-loop.stderr     |  12 +-
|  > .../tests/typecheck/should_fail/tcfail108.stderr   |   4 +-
|  > .../tests/typecheck/should_fail/tcfail154.stderr   |   6 +-
|  > .../tests/typecheck/should_fail/tcfail157.stderr   |  12 +-
|  > .../tests/typecheck/should_fail/tcfail213.stderr   |   4 +-
|  > .../tests/typecheck/should_fail/tcfail214.stderr   |   8 +-
|  > .../tests/typecheck/should_fail/tcfail220.hsig     |   1 -
|  > .../tests/typecheck/should_fail/tcfail220.stderr   |   8 -
|  > utils/genprimopcode/Main.hs                        |  49 +-
|  > utils/haddock                                      |   2 +-
|  > 86 files changed, 1985 insertions(+), 1672 deletions(-)
|  >
|  > Diff suppressed because of size. To see it, use:
|  >
|  >    git diff-tree --root --patch-with-stat --no-color --find-copies-
|  harder --ignore-space-at-eol --cc
|  ffc21506894c7887d3620423aaf86bc6113a1071
|  > _______________________________________________
|  > ghc-commits mailing list
|  > ghc-commits at haskell.org
|  > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-commits
|  
|  _______________________________________________
|  ghc-devs mailing list
|  ghc-devs at haskell.org
|  http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


More information about the ghc-devs mailing list