Changes between Version 11 and Version 12 of Status/Apr10


Ignore:
Timestamp:
May 5, 2010 4:03:27 PM (5 years ago)
Author:
simonpj
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Status/Apr10

    v11 v12  
    1616=== Language changes === 
    1717 
    18 We have made a few small language improvements. 
    19  
    20 Kathleen Fisher suggested two improvements to quasi-quotation: 
     18We have made only a few small language improvements. 
     19The most significant ones concern quasi-quotations, implementing 
     20suggestions from Kathleen Fisher: 
    2121 * Quasi-quotes can now appear as a top-level declaration, or in a type, as well 
    2222   as in a pattern or expression. 
     
    2727[pads| ...blah..blah... |] 
    2828}}} 
    29 The second delaration uses the quasi-quoter called `pads` (which must 
     29The second declaration uses the quasi-quoter called `pads` (which must 
    3030be in scope) to parse the "...blah..blah..", and return a list of 
    3131Template Haskell declarations, which are then spliced into the program 
     
    3838rewrite the constraint solver, which forms the heart of the type 
    3939inference engine, and that remains the plan although he is being slow 
    40 about it.  (The existing constraint solver works surprisingly 
    41 well, but we have lots of tickets demonstrating bugs in corner cases.) 
    42 An upcoming epic (60-page) JFP paper brings together all the key ideas; 
    43 watch Simon's home page. 
     40about it.  The existing constraint solver works surprisingly 
     41well, but we have lots of tickets demonstrating bugs in corner cases. 
     42An upcoming epic (70-page) JFP paper "Modular type inference with local assumptions"  
     43brings together all the key ideas; watch Simon's home page. 
    4444 
    4545=== The mighty simplifier === 
    4646 
    4747One of GHC's most crucial optimisers is the Simplifier, which is 
    48 reponsible for many local transformations, plus applying inlining and 
     48responsible for many local transformations, plus applying inlining and 
    4949rewrite-rules.  Over time it had become apparent that the 
    5050implementation of INLINE pragmas wasn't very robust: small changes in 
     
    6969f2 x y = <blah> 
    7070}}} 
    71   Here `f1` will be inlined when it is applied to one arugment, but `f2` will only be inlined if it appears applied to two arguments.  This turns out to be helpful in reducing gratuitous code bloat. 
     71  Here `f1` will be inlined when it is applied to one argument, but `f2` will only be inlined if it appears applied to two arguments.  This turns out to be helpful in reducing gratuitous code bloat. 
    7272 
    7373Another important related change is this. Consider 
     
    7878    y = flop x 
    7979}}} 
    80 GHC will not fire rule "foo" because it is scared about duplicating the redec 
     80GHC will not fire rule "foo" because it is scared about duplicating the redex 
    8181`(flop x)`.  However, if you declare that `flop` is CONLIKE, thus 
    8282{{{