I suggest starting with the proposed improvements to let !pat = rhs * Remove the stuff in TcBinds that forces such things to be non-recursive and monomorphic -- ie bangs no longer affect type checking. * In DsBinds, add the appropriate seqs. Take a look at DsExpr.ds_val_bind and see how you get on Simon | -----Original Message----- | From: Johan Tibell [mailto:johan.tibell@gmail.com] | Sent: 25 July 2014 12:49 | To: Simon Peyton Jones | Cc: ghc-devs@haskell.org; Duncan Coutts | Subject: Re: Early draft spec of Strict language pragma | | Thanks a lot Simon. | | Re top-level bindings: | | I agree. There's no good time to force CAFs so they'll need to be | forced on first use. | | Re newtypes: | | I agree. Pattern matching on newtypes should be strict. | | Implementation: | | Where do I get started? I think we looked at some code together during | the call, but I forgot what it was? Any good identifiers to grep for? | | On Fri, Jul 25, 2014 at 11:03 AM, Simon Peyton Jones | <simonpj@microsoft.com> wrote: | > OK I have made extensive edits to | > https://ghc.haskell.org/trac/ghc/wiki/StrictPragma | > | > You might want to check it through. | > | > Simon | >