Changes between Version 30 and Version 31 of NestedCPR


Ignore:
Timestamp:
Jan 13, 2014 11:26:02 AM (3 months ago)
Author:
nomeata
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • NestedCPR

    v30 v31  
    2929 
    3030 * `facIO` in #1600: Not eligible for nested CPR, as the result is not forced. Using `return $!` makes this work. 
    31  * `mean` in #2289: Not eligible for nested CRP. The base case `go x l s | x > m      = P s l` is – to the demand analyzer – lazy in `s` and `l`, so doing nested CRP would make that stricter. It works with {{{s `seq` l `seq` P s}}}. But `P` ''is'' a strict constructor! I guess we need to make use of that, i.e. the application of a strict constructor to something possibly diverging stores this as terminating. 
     31 * `mean` in #2289: Not eligible for nested CRP. The base case `go x l s | x > m      = P s l` is – to the demand analyzer – lazy in `s` and `l`, so doing nested CRP would make that stricter. It works with {{{s `seq` l `seq` P s}}}. But `P` ''is'' a strict constructor! When the demand analyser runs, it still sees the wrapper `$WP`. Maybe it just needs to be inlined earlier? 
    3232 * #2387 works nicely! (but note that `go` uses a `!n` pattern already) 
    3333