Changes between Version 58 and Version 59 of Supercompilation


Ignore:
Timestamp:
Nov 21, 2009 4:11:19 AM (6 years ago)
Author:
pejo
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Supercompilation

    v58 v59  
    1313== Shortcomings of the prototype ==
    1414
    15  * Use a state monad
    1615 * Uses eager substitution
    17  * Divide by zero
    1816 * Homeomorphic embedding for types?  Currently all types are regarded as equal (like literals).  Decision: leave it this way for now.
    1917 * Msg does not respect alpha-equivalence.  If we match lambda against lambdas, and the binders differ, we say "different".  Decision: deal with alpha-equiv in msg when we have the new alg working.
    20  * Inlining `unsafePerformIO`
     18 * Inlining `unsafePerformIO` and other NOINLINE things.
    2119 * Adding constraint info
    2220   * case (x>y)of { ....case (x>y) of ... }
     
    2523 * case var subst
    2624 * strictness annotations
    27  * Extend homemb.
    2825
    2926
     
    8986     * (Given no cycle in imports) Perhaps the things we can not inline should be put at the top level in the same module, and the old module discarded?
    9087
    91  * Can we improve the homeomorphic embedding so that append xs xs is not embedded in append xs ys?
     88 * Can we improve the homeomorphic embedding so that append xs xs is not embedded in append xs ys? '''Done'''
    9289
    9390 * http://hackage.haskell.org/trac/ghc/ticket/2598
     
    9996
    10097What next? '''Implement the new algorithm.'''
    101 
    102  * Exposing all unfoldings:
    103    * Flag -fexpose-all-unfoldings (a cousin of -fomit-interface-pragmas) (default is off) to switch on the spit-out-all-unfoldings stuff.
    104    * Validate with flag off; then push.
    105  * Add IO monad;
    10698 * Figure out arity for each top-level (lambda lifted) function, and only inline when it is saturated.  (Write notes in paper, explaining why this might be good.)  NB: linearity becomes simpler, because a variable cannot occur under a lambda.
    107   * Neil's msg idea
     99  * Neil's msg idea; Will not help as much in practice since we are guaranteed to have the same head
    108100
    109101Later
     
    116108
    117109Done
     110 * Exposing all unfoldings:
     111   * Flag -fexpose-all-unfoldings (a cousin of -fomit-interface-pragmas) (default is off) to switch on the spit-out-all-unfoldings stuff.
     112   * Validate with flag off; then push.
     113 * Add IO monad;
    118114 * Faster representation for memo table; a finite map driven by the head function
    119115 * Refined whistle-blowing test