simonpj (Simon Peyton Jones)
User

Projects

Today

  • Clear sailing ahead.

Tomorrow

  • Clear sailing ahead.

Friday

  • Clear sailing ahead.

Badges

  • Commit Bits
    Guru Meditation #00000004
    Epic
  • GHC HQ
    Not to be confused with GCHQ
    Legendary
  • My Name is Simon
    Benevolent Leaders of GHC
    Heirloom
User Since
Jun 9 2014, 9:34 AM (141 w, 2 d)
Availability
Available

Recent Activity

Today

simonpj committed rGHC254bc3357b0d: A much nicer solution for typechecking ApplicativeDo (authored by simonpj).
A much nicer solution for typechecking ApplicativeDo
Wed, Feb 22, 7:48 AM
simonpj committed rGHCfed7136c5978: Test Trac #13244 (authored by simonpj).
Test Trac #13244
Wed, Feb 22, 5:20 AM
simonpj committed rGHC484f8d35b7cb: Fix ApplicativeDo constraint scoping (authored by simonpj).
Fix ApplicativeDo constraint scoping
Wed, Feb 22, 5:20 AM
simonpj committed rGHCb12539298340: Test Trac #13271 (authored by simonpj).
Test Trac #13271
Wed, Feb 22, 5:20 AM
simonpj accepted D3169: Prohibit RULES changing constructors.

great

Wed, Feb 22, 2:37 AM

Yesterday

simonpj committed rGHC499a15db0d71: Test Trac #13300 (authored by simonpj).
Test Trac #13300
Tue, Feb 21, 11:45 AM
simonpj committed rGHC3c62b1d6b672: Gather constraints locally in checkMain (authored by simonpj).
Gather constraints locally in checkMain
Tue, Feb 21, 11:45 AM
simonpj committed rGHCc7508083388a: Disallow class instances for synonyms (authored by simonpj).
Disallow class instances for synonyms
Tue, Feb 21, 11:45 AM
simonpj committed rGHCe3e218e27854: A bit more tc-tracing in TcTyClsDecls (authored by simonpj).
A bit more tc-tracing in TcTyClsDecls
Tue, Feb 21, 11:44 AM
simonpj committed rGHC0c9d9dec0a92: Remove panics for TcTyCon (authored by simonpj).
Remove panics for TcTyCon
Tue, Feb 21, 11:44 AM
simonpj committed rGHC0d43f74fb6bf: A little refactoring of the simplifier around join points (authored by simonpj).
A little refactoring of the simplifier around join points
Tue, Feb 21, 11:44 AM
simonpj committed rGHC95cbb55cf7df: Refactor inferConstraints not to use CPS (authored by simonpj).
Refactor inferConstraints not to use CPS
Tue, Feb 21, 8:29 AM
simonpj committed rGHC713ebd7cf038: Fix computation of dfun_tvs in mkNewTypeEqn (authored by simonpj).
Fix computation of dfun_tvs in mkNewTypeEqn
Tue, Feb 21, 8:29 AM
simonpj committed rGHCfd841f877ab7: Fix DeriveAnyClass (again) (authored by simonpj).
Fix DeriveAnyClass (again)
Tue, Feb 21, 4:30 AM
simonpj committed rGHC59026b3be1ba: Spelling in comments only (authored by simonpj).
Spelling in comments only
Tue, Feb 21, 4:30 AM

Fri, Feb 17

simonpj committed rGHC0e7601749d53: Simplify OutputableBndr (authored by simonpj).
Simplify OutputableBndr
Fri, Feb 17, 8:00 AM
simonpj committed rGHCe55986a98101: Fix a substitution bug in cseCase (authored by simonpj).
Fix a substitution bug in cseCase
Fri, Feb 17, 8:00 AM
simonpj committed rGHC8d401e50ce35: Honour -dsuppress-uniques more thoroughly (authored by simonpj).
Honour -dsuppress-uniques more thoroughly
Fri, Feb 17, 7:17 AM

Thu, Feb 16

simonpj committed rGHCe52a335d3ae2: Comments only, about inl_inline and inl_act (authored by simonpj).
Comments only, about inl_inline and inl_act
Thu, Feb 16, 6:04 PM
simonpj committed rGHCf4aa99847903: Better perf for haddock.base, haddock.Cabal (authored by simonpj).
Better perf for haddock.base, haddock.Cabal
Thu, Feb 16, 11:46 AM
simonpj committed rGHCb8c29bc9ccd5: Use the correct origin in SectionL and Section R (authored by simonpj).
Use the correct origin in SectionL and Section R
Thu, Feb 16, 8:27 AM
simonpj committed rGHC6bab649bde65: Improve checking of joins in Core Lint (authored by simonpj).
Improve checking of joins in Core Lint
Thu, Feb 16, 8:27 AM
simonpj committed rGHCfc9d152b058f: Comments and tiny refactor only (authored by simonpj).
Comments and tiny refactor only
Thu, Feb 16, 8:27 AM
simonpj added a comment to D3142: Track good joins instead of bad.

I have an upcoming patch for this, as I mentioned

Thu, Feb 16, 1:57 AM

Fri, Feb 10

simonpj committed rGHC76244ec2cbde: Change rewritableTyVarsOfType to anyRewritableTyVar (authored by simonpj).
Change rewritableTyVarsOfType to anyRewritableTyVar
Fri, Feb 10, 8:20 AM
simonpj added a comment to D2961: Refactor DeriveAnyClass's instance context inference.

Great -- go for it.

Fri, Feb 10, 2:44 AM
simonpj accepted D2822: Allow type defaulting for multi-param type classes with ExtendedDefaultRules.

I'm OK with this. Let's add a Note as I suggest above, and land it

Fri, Feb 10, 2:28 AM

Thu, Feb 9

simonpj added a comment to D2961: Refactor DeriveAnyClass's instance context inference.

OK well, we probably get better error messages if we report the errors from simplifyDeriv. So I've done that -- see the patch I've put in email to you. Works for all of tests/deriving, except that two error message improve

Thu, Feb 9, 11:46 AM
simonpj added a comment to D2961: Refactor DeriveAnyClass's instance context inference.

you should also delete

Thu, Feb 9, 9:51 AM
simonpj added a comment to D2961: Refactor DeriveAnyClass's instance context inference.

OK I see.

Thu, Feb 9, 9:36 AM
simonpj committed rGHCf03ebe3ac6a5: Guard rewritableTyVarsOfType (authored by simonpj).
Guard rewritableTyVarsOfType
Thu, Feb 9, 6:14 AM
simonpj accepted D3105: zonkCt tries to maintain the canonical form of a Ct..

By all means add the ASSERT (with an explanation). Then good.

Thu, Feb 9, 3:58 AM

Wed, Feb 8

simonpj committed rGHCa94b484715d3: Back-pedal the fix for Trac #8155 (authored by simonpj).
Back-pedal the fix for Trac #8155
Wed, Feb 8, 11:09 AM
simonpj committed rGHC3cfef763ab6c: Kill inaccessible-branch complaints in record update (authored by simonpj).
Kill inaccessible-branch complaints in record update
Wed, Feb 8, 11:09 AM
simonpj committed rGHC9f3c1e67e573: Add some commented-out tracing in SpecConstr (authored by simonpj).
Add some commented-out tracing in SpecConstr
Wed, Feb 8, 11:09 AM
simonpj added a comment to D2961: Refactor DeriveAnyClass's instance context inference.

Is there a way to grab the insoluble constraints in approximateWC?

Wed, Feb 8, 9:36 AM
simonpj added a comment to D3105: zonkCt tries to maintain the canonical form of a Ct..

It seems that... works

Wed, Feb 8, 9:29 AM
simonpj committed rGHC421308ef6ae3: Improve -dsuppress-coercions (authored by simonpj).
Improve -dsuppress-coercions
Wed, Feb 8, 7:13 AM
simonpj committed rGHC8e9593fb2147: Improve the simple optimiser (authored by simonpj).
Improve the simple optimiser
Wed, Feb 8, 7:12 AM
simonpj requested changes to D3105: zonkCt tries to maintain the canonical form of a Ct..

I'd much prefer to follow comment:7 on Trac Trac #11525. Was there some reason you chose not to do that?

Wed, Feb 8, 4:03 AM
simonpj added a comment to rGHCb8f58d79ee3e: Another improvement to SetLevels.

Maybe there are some performance cliffs somewhere. Espcially as I see a similar regression in binary-trees with D3089.

Wed, Feb 8, 2:31 AM

Tue, Feb 7

simonpj committed rGHCb8f58d79ee3e: Another improvement to SetLevels (authored by simonpj).
Another improvement to SetLevels
Tue, Feb 7, 8:01 AM
simonpj committed rGHCf77e99bbaac1: Comments only (authored by simonpj).
Comments only
Tue, Feb 7, 8:01 AM
simonpj committed rGHCa0174d226435: Do not inline bottoming things (authored by simonpj).
Do not inline bottoming things
Tue, Feb 7, 8:01 AM
simonpj added inline comments to D3089: Improve the Occurrence Analyzer’s handling of one-shot functions.
Tue, Feb 7, 5:20 AM
simonpj added a comment to D3073: Do not drop dead code in the desugarer.

I'm happy with the approach of starting with a live-var set. Much neater than messing with the guts of the analyser

Tue, Feb 7, 2:43 AM

Mon, Feb 6

simonpj accepted D3057: Correct behaviour of push_bang_into_newtype when the pattern match has no arguments.

That looks right! Thank you!

Mon, Feb 6, 5:16 PM

Sun, Feb 5

simonpj added a comment to D3046: Do Worker/Wrapper for NOINLINE things.

Can we land this?

Sun, Feb 5, 4:52 PM

Fri, Feb 3

simonpj requested changes to D3073: Do not drop dead code in the desugarer.

No, let's NOT put it in the environment. This business of not dropping dead binding applies only at top level, right? If so, it's much clearer just to pass the flag down separately (just one or two levels of functions), as comment:9 suggetss.

Fri, Feb 3, 5:50 PM
simonpj committed rGHCafa409faffba: Use tyCoVarsOfType for CTyEqCan in shouldSplitWD (authored by simonpj).
Use tyCoVarsOfType for CTyEqCan in shouldSplitWD
Fri, Feb 3, 11:47 AM
simonpj added a comment to D2996: WIP – computed gotos in the interpreter.

@simonpj Is there any way this patch could cause a Core Lint failure? This is Trac #13204.

Fri, Feb 3, 11:44 AM
simonpj added a comment to D2822: Allow type defaulting for multi-param type classes with ExtendedDefaultRules.

I'll consult the steering committee. Meanwhile look at my proposed simplification of the spec, on the ticket.

Fri, Feb 3, 11:39 AM
simonpj added a comment to D2961: Refactor DeriveAnyClass's instance context inference.

I'm still totally stuck when it comes to implementing the grand plan involving implication constraints

Fri, Feb 3, 5:31 AM
simonpj added a comment to D2961: Refactor DeriveAnyClass's instance context inference.

Let's do (1) or (2). I'm content with (2) as a stop-gap if you want to just commit and open a ticket for refactoring.

Fri, Feb 3, 4:54 AM
simonpj accepted D3067: Get rid of ProbOneShot.
Fri, Feb 3, 2:35 AM

Thu, Feb 2

simonpj added a comment to D2853: Join points.

It looks like this was committed despite the performance regressions in perf/compiler/all.T. What's the plan here?

Thu, Feb 2, 3:24 AM
simonpj added a comment to D2038: TysPrim: Generalize kind of (->).

The haddock.base and haddock.Cabal tests regress in allocations by about 20%.

Thu, Feb 2, 3:09 AM
simonpj added a comment to D3051: Don't tick top-level string literals.

Wouldn't literal strings always float up to the top level eventually? Always discarding ticks on string literals might be the right thing to do.

Thu, Feb 2, 3:07 AM

Wed, Feb 1

simonpj requested changes to D3057: Correct behaviour of push_bang_into_newtype when the pattern match has no arguments.
Wed, Feb 1, 11:47 AM
simonpj accepted D3057: Correct behaviour of push_bang_into_newtype when the pattern match has no arguments.

Like I say on the ticket, I don't think this is right. You are making the function lazy. But it isn't.

Wed, Feb 1, 11:47 AM
simonpj added a comment to D2822: Allow type defaulting for multi-param type classes with ExtendedDefaultRules.

I don't want to delay you but this design has had no serious attention from anyone other than you. And while the patch is small, it commits GHC into the future to implement whatever the change is.

Wed, Feb 1, 11:25 AM
simonpj accepted D3051: Don't tick top-level string literals.

Generally good!

Wed, Feb 1, 8:42 AM
simonpj added a comment to D2822: Allow type defaulting for multi-param type classes with ExtendedDefaultRules.

I there s a bug (in bad_tvs), and I wish there had been more debate. The rule seems a bit ad hoc, and once it's in it'll be hard to pull it out.

Wed, Feb 1, 5:34 AM
simonpj added a comment to D3054: Remove very broad ignore. [ci skip].
In D3054#89570, @Phyx wrote:

@simonpj I believe you currently use this to ignore test data? Maybe instead add it to .git/info/exclude?
This would be local and would have to be added in each clone but it won't give surprising behaviour to those not expecting it.

Wed, Feb 1, 3:57 AM
simonpj added a comment to D3052: Extensionalize if-then-else syntax, on by default in H98 and H2010.

Motivation? Can we run this through the ghc proposals process?

Wed, Feb 1, 3:33 AM
simonpj requested changes to D2961: Refactor DeriveAnyClass's instance context inference.

I'm keen on this patch, but there's an easier way to do it! See comments.

Wed, Feb 1, 3:30 AM

Tue, Jan 31

simonpj added inline comments to D3046: Do Worker/Wrapper for NOINLINE things.
Tue, Jan 31, 5:31 PM
simonpj added inline comments to D3046: Do Worker/Wrapper for NOINLINE things.
Tue, Jan 31, 5:08 PM
simonpj added a comment to D2038: TysPrim: Generalize kind of (->).

The reflection library is NOT destroyed by making single-parameter classes into a data type. See https://mail.haskell.org/pipermail/ghc-devs/2017-January/013600.html, under "Third".

Tue, Jan 31, 3:04 AM
simonpj added a comment to D2038: TysPrim: Generalize kind of (->).

Re "major disaster", I'm missing the point. We discussed this before, in the previous version. Suppose we have a newtype axiom:

ntax :: (C a ::: TYPE ConstraintRep) ~R  (a :: TYPE LiftedPtrRep)

To avoid being able to extract ContraintRep ~R LiftedPtrRep we decided to weaken one of the coercion constructors, the one that gets a kind coercion from a type coercion. We don't need it, and it's awkward here.

Tue, Jan 31, 3:03 AM

Mon, Jan 30

simonpj accepted D3046: Do Worker/Wrapper for NOINLINE things.

Looks good

Mon, Jan 30, 6:16 PM

Thu, Jan 26

simonpj added a comment to D3023: Separate Constraint from Type in Core..

But there is a problem: how do we reject types like

Eq a -> a -> a?

Thu, Jan 26, 3:56 AM

Wed, Jan 25

simonpj added a comment to D2983: Check that a default type signature aligns with the non-default signature.

I like your deeplyInstantiate2 much more than tcSplitNestedSigmaTys. Use the former not the latter.

Wed, Jan 25, 5:52 PM
simonpj added a comment to D3003: Expose local variables in brackets to reify..

I'm sorry Facundo, I just don't have the bandwidth to dig into this for the next few weeks. Richard, who is in charge of TH, is in a similar bind.

Wed, Jan 25, 5:28 PM
simonpj added a comment to rGHC53e2e70a4778: Ensure that scrutinee constant folding wraps numbers.

This had a reproducible effect of increasing runtime of fasta by +4.47%. Are runtime effects here expected?

Wed, Jan 25, 2:50 AM
simonpj accepted D3017: Generalizes the type of asProxyTypeOf (#12805).

Looks fine to me. I can't see any downsides. Except, I suppose, that

asProxyTypeOf e1 e2

with e2 :: F beta, and F an injective type function. It's just possible that knowing that F beta ~ Proxy gamma might allow the injectivity to kick in, while F beta ~ delta gamma might now.

Wed, Jan 25, 2:42 AM

Tue, Jan 24

simonpj added inline comments to rGHC5a9a1738023a: Refine exprOkForSpeculation.
Tue, Jan 24, 3:51 AM

Mon, Jan 23

simonpj accepted D3009: Ensure that scrutinee constant folding wraps numbers.

Great moodulo documentation in teh code

Mon, Jan 23, 6:29 PM
simonpj accepted D3008: Re-sort case alternatives after scrutinee constant folding (#13170).
Mon, Jan 23, 6:21 PM
simonpj added inline comments to D2992: Check local type family instances against all imported ones.
Mon, Jan 23, 6:01 PM
simonpj accepted D2992: Check local type family instances against all imported ones.

Looks good

Mon, Jan 23, 5:45 PM
simonpj added a comment to D2983: Check that a default type signature aligns with the non-default signature.

I see now. The point is that we want to match up the tau-part of the two types, after discarding any number of enclosing forall or Eq a => wrappings. We might even find a forall to the right of a function arrow (->). So

class C a where
  op :: a -> forall b. Eq b => b -> b
  default op :: (Ord a, Eq c) => a -> c -> c

should arguably be OK. (I think you need a Note to explain why it's the Right Thing to ignore all these constraints. You've explained it to Matthew on IRC, so put it in the Note.)

Mon, Jan 23, 5:20 PM
simonpj committed rGHC596dece78660: Record evaluated-ness on workers and wrappers (authored by simonpj).
Record evaluated-ness on workers and wrappers
Mon, Jan 23, 11:42 AM

Jan 23 2017

simonpj committed rGHC2b64e926a628: Apply the right substitution in ty-fam improvement (authored by simonpj).
Apply the right substitution in ty-fam improvement
Jan 23 2017, 2:29 AM
simonpj committed rGHC6850eb64cc23: Improve pretty-printing of IfaceCoercions (authored by simonpj).
Improve pretty-printing of IfaceCoercions
Jan 23 2017, 2:29 AM

Jan 20 2017

simonpj retitled D2995: Record evaluated-ness on workers and wrappers from to Record evaluated-ness on workers and wrappers.
Jan 20 2017, 11:49 AM
simonpj added inline comments to D2853: Join points.
Jan 20 2017, 10:51 AM
simonpj added inline comments to D2853: Join points.
Jan 20 2017, 10:51 AM
simonpj committed rGHCb8f1b018312d: Test Trac #11444 (authored by simonpj).
Test Trac #11444
Jan 20 2017, 8:40 AM
simonpj committed rGHCb78fa759bfb4: Simplify and improve CSE (authored by simonpj).
Simplify and improve CSE
Jan 20 2017, 8:40 AM
simonpj committed rGHC9be18ea4e5cb: Fix a nasty bug in exprIsExpandable (authored by simonpj).
Fix a nasty bug in exprIsExpandable
Jan 20 2017, 8:40 AM
simonpj added a comment to D2105: Exhaustiveness check for EmptyCase (Trac #10746).

I'm sorry but this patch feels vastly over-weight for what it does. Large slabs of new code, all to deal with a corner case. It just doesn't smell right at all.

Jan 20 2017, 8:07 AM

Jan 18 2017

simonpj added inline comments to D2987: Mark reallyUnsafePtrEquality# as can_fail.
Jan 18 2017, 4:27 PM
simonpj added a comment to D2853: Join points.

I have only worked through about half of this, but it's a start

Jan 18 2017, 4:25 PM

Jan 17 2017

simonpj added a comment to D1259: Don't inline String literals or CallStacks.

Here's a minimized version that doesn't depend on any external modules.

Jan 17 2017, 5:33 PM
simonpj added a comment to D1259: Don't inline String literals or CallStacks.

Can you give me a small repro case so I can see exactly what you are saying? I can't do it in my head!

Jan 17 2017, 10:41 AM
simonpj added a comment to D2853: Join points.
Perhaps removing the LNE analysis from CoreToStg will help?
Jan 17 2017, 9:23 AM

Jan 16 2017

simonpj added inline comments to rGHC5a9a1738023a: Refine exprOkForSpeculation.
Jan 16 2017, 4:21 PM
simonpj committed rGHC563d64fd0672: Comments about TyBinders (only) (authored by simonpj).
Comments about TyBinders (only)
Jan 16 2017, 10:03 AM
simonpj committed rGHC5a9a1738023a: Refine exprOkForSpeculation (authored by simonpj).
Refine exprOkForSpeculation
Jan 16 2017, 10:03 AM