mlscript
mlscript copied to clipboard
Deforestation (tracking issue)
TODO
- [x] Duplication of definitions
- [ ] Float out lambda binders
Missing Implementation
- [ ]
restParamand multiple parameter lists - [ ] Deforestation related to functions and values inside classes/modules
- [ ]
Matchblocks with non-Value.Refscrutinees (likeMatch(Select(…), …))) I put this as a missing implementation here because I am not sure how to handle selections inside branches related to non-Value.Refscrutinees — but maybe this is not strictly a “missing implementation” because it seems that although the definition of Match says that thescrutcan be aPath, the scrut currently always seems to be compiled to aValue.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