mlscript icon indicating copy to clipboard operation
mlscript copied to clipboard

Deforestation (tracking issue)

Open ychenfo opened this issue 8 months ago • 0 comments

TODO

  • [x] Duplication of definitions
  • [ ] Float out lambda binders

Missing Implementation

  • [ ] restParam and multiple parameter lists
  • [ ] Deforestation related to functions and values inside classes/modules
  • [ ] Match blocks with non-Value.Ref scrutinees (like Match(Select(…), …))) I put this as a missing implementation here because I am not sure how to handle selections inside branches related to non-Value.Ref scrutinees — but maybe this is not strictly a “missing implementation” because it seems that although the definition of Match says that the scrut can be a Path, the scrut currently always seems to be compiled to a Value.Ref.

More todos

  • [ ] Merging of duplicated consumers
    • After fusion, some duplicated consumers may have identical bodies, they can be merged
    • Before fusion, duplication of consumers may lead to loss of fusion opportunities
  • [ ] Reification of recursive strategies

Ad-hoc things to generalize

  • [ ] Remove the special-casing of the "force" and "lazy" and use annotations instead
  • [ ] Don't special-case NofibPreluse – instead, allow listing a set of file to optimize with

ychenfo avatar Apr 28 '25 16:04 ychenfo